在调试RFID_RC522及以前相关的模块中,往往会遇到代码中出现数据格式问题,这些问题常常也是千奇百怪。为了彻底解决这些无聊的问题,有必要重新深入地学习C语言中的数据类型:
C语言中,仅有4种基本数据类型——整型、浮点型、指针和聚合类型(如数组和结构等)。
整型家族:
包括字符、短整型、整型和长整型,全都分为有符号(signed)和无符号(unsigned)两类。
长整型至少应该和整型一样长,而整型至少应该和短整型一样长。
字符在本质上是小整型值。缺省的char要么是signed char ,要么是unsigned char,这取决于编译器。
以上这个事实意味不同机器上char可能拥有不同范围的值。所以,只有当程序所使用的char型变量的值位于signed char和unsigned char的交集中,这个程序才是可移植的。例如,ASCII字符集中的字符都是位于这个范围之内的。
显式声明有其好处也有其缺陷。好处在于把字符当作当作小整型值的程序中,如果显式地把这类变量声明为signed或unsigned,可以提高这类程序的可移植性,但缺陷之处在于可能会发生的兼容性问题。
字面值是字面值常量的缩写。
十进制整型字面量可能是int、long或unsigned long。在缺省情况下,它是最短类型但能完整容纳这个值。
整数也可以用八进制来表示,只要在数值面前以0开头。整数也可以用十六进制来表示,以0x开头。例如:
0173 017777 000060
0x7b 0xFFFF 0xabdf00
注意:在八进制字面值中,数字8