一、sizeof是什么
如题,sizeof是一个操作符,且是单目操作符
二、sizeof返回值类型
sizeof返回值类型是 size_t ,size_t 是无符号整数类型
三、sizeof的使用
1.计算数据类型的大小(单位:字节)
printf("%zd\n", sizeof(short));
printf("%zd\n", sizeof(int));
printf("%zd\n", sizeof(long));
printf("%zd\n", sizeof(long long));
printf("%zd\n", sizeof(float));
printf("%zd\n", sizeof(double));
2.也可以直接计算变量的大小,此时 sizeof 的括号可省略
int a = 10;
double b = 3.14;
printf("%zd\n", sizeof(a));
printf("%zd\n", sizeof b );
四、关于size_t
以一例题入手,求运行结果
#include <stdio.h>
int i;
int main()
{
i--;
if (i > sizeof(i))
{
printf(">\n");
}
else
{
printf("<\n");
}
return 0;
}
分析:1.全局变量 i 未初始化,则默认初始化为0
2.i --后,i 等于 -1
3.sizeof(i)等于4,但是无符号整数
4.整型-1 与 无符号整型 4 比较大小,需要进行算数转换:将整型-1转换为无符号整型
如何算数转换:补码的最高位成为有效位,不再是符号位
-1的原码:10000000 00000000 00000000 00000001
补码:11111111 11111111 11111111 11111111
算数转换后补码:11111111 11111111 11111111 11111111
原码:11111111 11111111 11111111 11111111
十进制为 4,294,967,295 大于 4
所以最终程序运行结果为 >