一、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
所以最终程序运行结果为 >