C中的三元运算符>> [

问题描述 投票:3回答:1
#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\n"); else if (sizeof((x == 2) ? f : i) == sizeof(short int)) printf("short int\n"); }
输出为“浮动”。所以我不明白为什么sizeof((x==2)?f:i)总是返回4。我认为声明(x==2)?f:i;缺少变量,但它始终返回4(sizeof(f))

您能帮我吗!这是我学习的第一门编程语言。我知道这个问题很愚蠢,但是对我来说却很难。感谢您的宝贵时间:)祝您有美好的一天;)

而且我第一次尝试使用Stackoverflow时,可能会有一些错误。希望你能原谅我

#include

int main(){int x = 1;短整数i = 2;浮点数f = 3;如果(sizeof((x == 2)?f:i)== sizeof(float))printf(“ float \ n”);否则如果(sizeof((x == 2)?...

c operators ternary
1个回答
7
投票
一种类型的表达式是在编译时静态推导的。

-3
投票
[sizeof((x==2)?f:i)您正在计算布尔表达式的大小,在C中为整数,在大多数计算机上其大小为4字节。
© www.soinside.com 2019 - 2024. All rights reserved.