有一个代码:
float x=-8.92;
int y=5;
printf("%u\n", sizeof x+y);
printf("%u\n", sizeof (x+y));
结论:
9
4
为什么会这样(结果 9)?毕竟,这些都是简单的一元运算。
最佳答案
sizeof
运算符的优先级高于二元加法运算符 +
.所以这个:
sizeof x+y
解析为:
(sizeof x)+y
所以在第一个表达式中你得到了 float
的大小在您的系统上为 4,然后将值 5 添加到该值,结果为 9。对于第二个表达式,子表达式 x+y
类型为 float
因为通常的算术转换,所以结果是打印出来的 4。
关于c - "sizeof"的结果取决于括号的位置。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65439117/