您的位置:首页 > 其它

移位操作的优先级

2015-03-05 10:29 85 查看
看一下下面的代码片段

#include <stdio.h>
#include <stdlib.h>

int main() {
int i = 2;
int x = i << 2 + 1;
printf("%d\n", x);
int y = (i << 2) + 1;
printf("%d\n", y);
return 0;
}


输出结果应该为16,9
因为加法的优先级高于左移,所以i<<2+1其实是i<<3。所以为16

运算操作该用括号用括号,不要带来不必要的麻烦,这种错误比较难以调试
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: