首页 > 解决方案 > 有人可以解释一下这个程序的输出是怎样的吗

问题描述

有人可以解释一下这个程序的输出是如何浮动的吗?我无法理解

#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");
}

标签: cintegeroperatorsconditional-operatorternary

解决方案


实际上,三元运算符并没有完全按照您的想法返回,但也不是 @user15790236 的想法。三元运算符一个运算符,因此它期望冒号两侧的参数类型相同。由于您有不同的类型,整数被提升为浮点数,因此表达式的类型为浮点数。


推荐阅读