【发布时间】:2013-10-19 11:46:34
【问题描述】:
为什么这段代码在 gcc 编译器中执行时输出为 8?
#include<stdio.h>
double i;
int main()
{
(int)(float)(char)i;
printf("%d",sizeof(i));
return 0;
}
【问题讨论】:
-
因为你的程序调用了未定义的行为。
-
你有没有想过尝试
sizeof((int)(float)(char)i)?但这与sizeof((int)i)相同。 -
因为转换
i不会改变i的类型。 -
我试了一下 sizeof((int)(float)(char)i) 得到了 4
标签: c gcc casting type-conversion