#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");
}
输出结果是“float”。因此,我不明白为什么
sizeof((x==2)?f:i)
总是返回4
。 我认为在(x==2)?f:i;
处缺少变量声明。但它总是返回4(sizeof(f))
。你能帮助我吗!这是我学习的第一种编程语言。我知道这个问题很愚蠢,但对我来说很难。感谢您花费时间:)祝您有一个愉快的一天;)
还有,这是我第一次尝试使用Stackoverflow,可能会有一些错误。希望您原谅我。
a ? b : c
有 一个 确定的类型,它不取决于a
:它仅取决于b
和c
,并且这个 一个 类型在编译时确定。0 ? 42 : 3.14
的类型为double
,值为3.14
,1 ? 42 : 3.14
的类型为double
,值为42.0
。 - pmgb + c
相同的类型。 - Ctx