gpt4 book ai didi

条件运算符

转载 作者:太空宇宙 更新时间:2023-11-04 00:49:13 24 4
gpt4 key购买 nike

在下面的代码中,当我获取第一个 if 条件的值时,它是 0,因此是假的。尽管如此,输出仍打印“float”。是短路的结果吗?如果是这样,当 sizeof 运算符未与“==”一起使用时,为什么它不会在“正常”情况下发生?

 #include<stdio.h>
int main()
{
int x=1;
short int i=2;
float f=3;

if(sizeof((x == 2) ? f : i) == sizeof(float))
printf("float");
else if(sizeof((x == 2) ? f : i) == sizeof(short int))
printf("Short int");
}

最佳答案

sizeof 不执行其操作数,而且是一个编译时运算符,这意味着您无论如何都不能在非常量值上分支。

sizeof((x == 2) ? f : i)(x == 2) ? f : 我。如果执行条件运算符,它会将您的 short 提升为 float,因此整个 sizeof 表达式等同于 sizeof(float )

关于条件运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25548816/

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