c - 我不明白大小如何等于 float 而不是 short int,因为 i 的大小是 short int
问题描述
我不明白大小如何等于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");
}
解决方案
条件表达式的类型总是在编译时定义。表达式(x == 2) ? f : i
是类型,float
因为i
被提升。
sizeof
不评估(VLA 除外),因此甚至不检查是否x == 2
.
推荐阅读
- java - 带有两个分隔符的 Java 打印数组
- javascript - 使用模板文字添加多个类名
- css - 为什么在使用相同的倾斜时我的字体大小看起来会有所不同?
- codeceptjs - 使用 CodeceptJS 在 Chromium 中运行自定义 JavaScript?
- anaconda - Theano 无法识别 Anaconda 新编译器
- c++ - 查找最长的公共子串
- java - 如何通过 RestController 代理内部 mjpeg 端点
- apache-spark - 为什么 DROP TABLE 忽略子句 IF EXISTS?
- java - 如何在小数点后四舍五入到最接近的 5
- java - `commitNow()` 和 `postDelayed` 如何使这段代码工作?