#include<stdio.h>
double i;
int main()
{
(int)(float)(char) i;
printf("%d", sizeof((int)(float)(char)i));
return 0;
}
以上在Microsoft编译器上输出4。为什么呢?
答案 0 :(得分:4)
sizeof
是变量的大小(以字节为单位)。在这种情况下,i
被强制转换为int
,这是4个字节。
这些是MS C ++上类型的大小:http://msdn.microsoft.com/en-us/library/cc953fe1(v=vs.71).aspx
答案 1 :(得分:2)
最后一个强制转换操作是int,所以你将得到sizeOf(int)。整数大小不同从编译器到另一个,有些返回2个字节,另外返回4个字节。
答案 2 :(得分:0)
sizeof
某事告诉你它在内存中占用了多少字节。你的平台和工具链显然有32位整数;它告诉你工具链(编译器)上的int
占用了4个字节。