1.各数据类型的字节数
代码
#include<stdio.h>
int main()
{
printf("char = %ld\n",sizeof(char));
printf("int = %ld\n",sizeof(int));
printf("unsigned int = %ld\n",sizeof(unsigned int));
printf("short = %ld\n",sizeof(short));
printf("unsigned short = %ld\n",sizeof(unsigned short));
printf("long = %ld\n",sizeof(long));
printf("long long = %ld\n",sizeof(long long));
printf("float = %ld\n",sizeof(float));
printf("double = %ld\n",sizeof(double));
return 0;
}
2.linux下打印sizeof结果
打印结果需要用%ld或者%lu。如果使用%d会报错
warning :format‘%d’ expects argument of type ‘int’, but argument 2 has type ‘long int’ [-Wformat=]
printf("char = %d\n",sizeof(char));//报警告
printf("char = %lld\n",sizeof(char));//报警告
3.unsigned无法修饰float和double
unsigned 的意思就是把内存中的数据第一位也用来表示数据,而不用于表示符号位。而浮点数规定内存中数据的第一位必须是符号位。因此两者之间是互相矛盾的,这也就是为什么浮点数不会有unsigned类型。