gpt4 book ai didi

c - 为什么 C 中 sizeof() 运算符的输出不同

转载 作者:行者123 更新时间:2023-11-30 21:13:43 25 4
gpt4 key购买 nike

我在测试你的c(作者:Yashvant Kanetkar)中看到了以下示例。

在以下示例中,sizeof() 给出输出 8

#include<stdio.h>

double d;

int main()
{
(int)(float)(char)d;
printf("%d\n",sizeof(d));
}

但在第二个示例中,sizeof() 给出输出 4

#include<stdio.h>

double d;

int main()
{
printf("%d\n",sizeof((int)(float)(char)d));
}

为什么两者输出不同?书上没有解释。

最佳答案

第一种情况相当于sizeof(double)。 Actor 在那里毫无用处。 d 的有效类型保持不变。在启用适当警告的情况下编译代码,您会看到一些警告,例如

warning: statement with no effect [-Wunused-value]

第二个相当于sizeof(int),强制转换有效。

您将看到基于您的平台/环境的结果(intdouble 的大小)。

也就是说,

  • sizeof 生成 size_t 类型的结果,您必须使用 %zu 格式说明符来打印结果。
  • 托管环境中 main() 的一致签名至少是 int main(void)

关于c - 为什么 C 中 sizeof() 运算符的输出不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42372581/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com