什么是数据类型:
1.可以理解为固定内存大小的别名
2.数据类型是创建变量的模子
例如:int a可以理解为以int这个模子在内存中创建出一个变量a
变量的本质:
实质:变量实际是一段连续的存储空间的别名
定义:通过变量来申请并命名存储空间
使用:通过变量的名字可以使用存储空间
总结:变量所占用的内存大小取决于所属的数据类型
1 #include <stdio.h> 2 3 int main() 4 { 5 char c = 0; 6 short s = 0; 7 int i = 0; 8 printf("%d,%d\n",sizeof(char),sizeof(c)); 9 printf("%d,%d\n",sizeof(short),sizeof(s)); 10 printf("%d,%d\n",sizeof(int),sizeof(i)); 11 12 return 0; 13 }
运行结果:
1,1
2,2
4,4
1 #include <stdio.h> 2 3 typedef int INT32; 4 typedef unsigned char BYTE; 5 typedef struct tag 6 { 7 BYTE b1; 8 BYTE b2; 9 short s; 10 INT32 i; 11 }TS;//注意结构体的大小 12 13 int main() 14 { 15 INT32 i32; 16 BYTE b; 17 TS ts; 18 19 printf("%d,%d\n",sizeof(INT32),sizeof(i32)); 20 printf("%d,%d\n",sizeof(BYTE),sizeof(b)); 21 printf("%d,%d\n",sizeof(TS),sizeof(ts)); 22 return 0; 23 }
运行结果:
4,4
1,1
8,8
有符号与无符号:
数据类型的最高位用于标识数据的符号
-最高位为1,表明这个数为负数
-最高位为0,表明这个数为正数
1 int sign = 0; 2 3 char i = -5; 4 short j = 5; 5 int k = -1; 6 7 sign = (i & 0x80);//sign 不等于 0 8 sign = (j & 0x8000);//sign 等于 0 9 sign = (k & 0x80000000);//sign 不等于 0
原文:https://www.cnblogs.com/yekongdebeijixing/p/13519851.html