【发布时间】:2020-12-24 13:41:22
【问题描述】:
有一个代码:
float x=-8.92;
int y=5;
printf("%u\n", sizeof x+y);
printf("%u\n", sizeof (x+y));
结论:
9
4
为什么会发生这种情况(结果 9)?毕竟,这些都是简单的一元运算。
【问题讨论】:
-
sizeof x+y = sizeof(x)+y = 4+5 =9 -
sizeof x == 4->y == 5->4 + 5 == 9 -
sizeof不需要括号。括号仅对数据类型是必需的,例如sizeof (int). -
关于何时使用括号,请参阅这篇帖子here。
-
@i486
sizeof不需要括号。括号仅对数据类型是必需的,例如sizeof (int)这意味着您应该始终使用它们。没关系,他们使这个程序所展示的错误成为不可能。
标签: c expression sizeof operator-precedence unary-operator