单片机嵌入式设备存储空间很有限,很小,并不像我们的PC机。
所以一定要用有限的空间去完成“无限大”的事情。
比如:char一个字节8位,而int4个字节啊,32位,只要在char范围内,当然要用char了
所以嵌入式编程中经常会使用char定义变量,
下面是嵌入式常用的typedef定义的数据类型
typedef signed char int8; 1 -128~+127
typedef short (int) int16; 2 -32768~32768
typedef int int32; 4 -2147483648~+2147483648
typedef long (int) int32/int64; 4/8
typedef long long (int) int64; 8
typedef unsigned char uint8; 1 0~255
typedef unsigned short uint16; 2 0~65535
typedef unsigned int int32; 4 0~4294967295
typedef unsigned long uint32; 4/8
typedef unsigned long long uint64; 8
typedef int bool;
#define true 1
#define false 0
注意:
1.int/long/short等不指定signed/unsigned时都默认是signed,char在标准中是unsigned
2. 无论是哪种存储方式,均是最高位为符号位,0代表正数,1代表负数。剩余位存储实际值。
3.int,short,long所占的字节数由编译器决定
4.所以int 也可以存储字符,只不过比较浪费存储空间,例如int c=’D’,在内存中存储的是ASCII码→(000000000000….)01101000,打印时用十进制显示(%d)为68,十六进制显示(%#x)为0x44,字符显示(%c)为D
5.如果 65 是数字类型, 存放的是 (65)这个数字的补码;‘A’这个字符 和 65这个数字在内存中是一样的。
如果 “65” 是个字符串, 存放的是 每个字符对应的 ASCII 码,就像你说的一样。