首页 > 解决方案 > 我不明白大小如何等于 float 而不是 short int,因为 i 的大小是 short int

问题描述

我不明白大小如何等于float而不是short inti 的大小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");
}

标签: c

解决方案


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

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


推荐阅读