10313:观察基本类型的大小
题目
输出 sizeof(int)、sizeof(double) 和 sizeof(char),并解释结果为何可能不同。
解析
c
#include <stdio.h>
int main(void) {
printf("sizeof(int) = %zu\n", sizeof(int));
printf("sizeof(double) = %zu\n", sizeof(double));
printf("sizeof(char) = %zu\n", sizeof(char));
return 0;
}1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
sizeof 的结果类型是 size_t,因此使用 %zu 输出。
解析
标准规定 sizeof(char) == 1。这里的 1 是一个字节,而一个字节包含的位数由 CHAR_BIT 决定,至少为 8。
int 必须满足标准规定的最小表示范围,double 必须满足相应的浮点范围和精度要求,但标准不固定它们各占多少字节。具体大小由目标平台的 ABI 和实现选择决定,所以常见输出 4、8、1 不是唯一合法结果。