版权所有:mud.ren; 版本:v2019,本教程持续更新中,欢迎提供建议和意见。如果有问题可以这里留言,也可以加QQ群:285533476,本群是本教程后续部分从零开发LPMUD游戏开发出来的DQMUD交流群。
我们已经基本介绍了所有的数据类型,这里补充一些知识,也算是本章重点的小节。
数据类型小结
类型分类
数据类型分原始基本类型和复合数据类型,复合数据类型是由基本数据类型组成的。另外根据变量值的存储方式也可以分为基本数据类型和引用数据类型。
整型、浮点型、字符串型都是基本数据类型,而数组、映射、结构体则是复合数据类型,这些简单了解即可,重点需要记住的是哪些引用数据类型。
在LPC语言中,以下数据类型都是引用数据类型:buffer、数组、映射、结构体,变量存的都是数据的引用(即地址)。
整数和小数
在第一节中我们已经讲了LPC语言的数据类型和C语言的不同点,这里对整型和浮点型做一个小结。
和C语言比,LPC语言只有有符号整形(int),没有无符号类型,也不分短整形和长整型,short 、 long 、 unsigned 、 signed在LPC中不再是关键字,可以做变量名。LPC的整型可以理解为C语言中的长整型。
和C语言比,LPC语言的浮点型也只有有符号单精度float,但实际取值范围和C语言的 double 类型一样。double 在LPC语言中不再是关键字。另外LPC语言中小数不可以使用指数形式表示。
和C语言不同的是,赋值时如果数据溢出,LPC语言赋值不会溢出而是取最大或最小值(驱动 fluffos 使用 strtoll() 处理常数),只是在后期数据运算时溢出,第一节已经给出了示例。
和C语言相同的是,整数和小数之间可以相互赋值:
- 将一个整数赋值给小数类型,在小数点后面加 0 就可以,加几个都无所谓。
- 将一个小数赋值给整数类型,就得把小数部分丢掉,只能取整数部分,这会改变数字本来的值。注意是直接丢掉小数部分,而不是按照四舍五入取近似值。
我们新建示例文件 test/2.4.1.c,代码如下:
int main()
{
float f = 251;
int w = 19.427;
int x = 92.78;
int y = 0.52;
int z = -87.27;
printf("f = %f, w = %d, x = %d, y = %d, z = %d\n", f, w, x, y, z);
return 1;
}
运行输出:
f = 251.000000, w = 19, x = 92, y = 0, z = -87