sizeof((int)(float)(char)i))当int定义时(int)(float)(char)i;

时间:2011-01-13 10:07:53

标签: c sizeof

#include<stdio.h>
double i;

int main()
{
    (int)(float)(char) i;
    printf("%d", sizeof((int)(float)(char)i));
    return 0;
}

以上在Microsoft编译器上输出4。为什么呢?

3 个答案:

答案 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个字节。