【发布时间】:2013-09-24 21:58:36
【问题描述】:
在下面列出的程序中,sizeof(int) 和 sizeof(long) 在我的机器上是相等的(都等于 4 字节(或 32 位))。据我所知,long 是 8 个字节。它是否正确?我有一台 64 位机器
#include <stdio.h>
#include <limits.h>
int main(void){
printf("sizeof(short) = %d\n", (int)sizeof(short));
printf("sizeof(int) = %d\n", (int)sizeof(int));
printf("sizeof(long) = %d\n", (int)sizeof(long));
printf("sizeof(float) = %d\n", (int)sizeof(float));
printf("sizeof(double) = %d\n", (int)sizeof(double));
printf("sizeof(long double) = %d\n", (int)sizeof(long double));
return 0;
}
【问题讨论】:
-
见this
-
我认为您的代码输出回答了您的问题。
-
@CharlieBurns 好吧,代码示例并不符合标准,因为编译器可能不兼容,可能具有特定于实现的行为或可能具有扩展。所以代码中的示例并不能证明它应该是什么。
-
@ShafikYaghmour 他的问题没有提到任何关于标准的内容。他的问题是'据我所知,长是 8 个字节。它是否正确?'从他的代码中可以明显看出答案是“不,你的机器上的 long 和你的编译器是 4 个字节”。
标签: c int long-integer sizeof