sizeof((int)(float)(char)i)) 当定义 int 时 (int)(float)(char) i;
#include<stdio.h>
double i;
int main()
{
(int)(float)(char) i;
printf("%d", sizeof((int)(float)(char)i));
return 0;
}
上述在 Microsoft 编译器上输出 4。为什么?
#include<stdio.h>
double i;
int main()
{
(int)(float)(char) i;
printf("%d", sizeof((int)(float)(char)i));
return 0;
}
The above outputs 4 on a Micrsoft compiler. Why?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
sizeof
是变量的大小(以字节为单位)。在本例中,i
被转换为 4 个字节的int
。这些是 MS C++ 上类型的大小: http: //msdn.microsoft.com/en-us/library/cc953fe1(v=vs.71).aspx
sizeof
is the size, in bytes, of the variable. In this case,i
is being cast to anint
which is 4 bytes.These are the sizes of types on MS C++: http://msdn.microsoft.com/en-us/library/cc953fe1(v=vs.71).aspx
最后一个转换操作是int,所以你将得到sizeOf(int)。整数大小因编译器而异,有些返回 2 字节,有些返回 4 字节。
The last cast operation is to int, so u will get the sizeOf(int). Integer size differes form compiler to another, some return 2-bytes and onther return 4-bytes.
sizeof
告诉你它在内存中占用了多少字节。您的平台和工具链显然有 32 位整数;它告诉您工具链(编译器)上的int
占用 4 个字节。sizeof
something tells you how many bytes it takes up in memory. Your platform and toolchain clearly has 32-bit integers; it's telling you thatint
, on your toolchain (compiler), takes up 4 bytes.