【发布时间】:2022-06-24 22:06:31
【问题描述】:
代码如下:
#include <stdio.h>
int main()
{
int a = 512,b = 32;
int c = a>>2 + b<<2;
printf("%d",c);
return 0;
}
我期望的结果不是 512,而是 128 (a>>2) + 128 (b
【问题讨论】:
-
你的编译器应该警告你关于操作符的优先级。您需要将
a>>2 + b<<2更改为(a >> 2) + (b << 2)。 -
那么如果你理解了优先级,那有什么问题呢?它被评估为`(a>>(2+b))
标签: c