我不明白大小等于浮点数而不是short int,因为i的大小是short int

时间:2018-08-28 13:51:53

标签: c

我不知道大小等于float而不是short int,因为i的大小是short int

这是我的代码:

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

1 个答案:

答案 0 :(得分:2)

条件表达式的类型总是在编译时定义。 由于提升了(x == 2) ? f : i,表达式float的类型为i

sizeof不会被评估(VLA除外),因此甚至不会检查x == 2是否是