关于运算符优先级的问题

zorro0799 2005-07-15 01:03:14
#include <iostream>
using namespace std;
int main()
{
int j;
j = 456 - (456 >> 4 << 4);
printf("j = %d\n", j);
return 0;
}
j =8
结果是8,执行顺序应该是 (456>>4)<<4
可一般的书都说<<的优先级是高于>>运算符,为何结果会是这样?
...全文
127 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
whatsouta 2005-07-15
  • 打赏
  • 举报
回复
优先级再加结合顺序判断

先左:>>结合456和4
再右:<<结合(456 >> 4)和4
===========================
楼主要注意:这里的左右不要理解成运算符的结合性,而是指运算的先后
newbiestar 2005-07-15
  • 打赏
  • 举报
回复
什么书上说的?难道又是谈好枪?
kernelxu 2005-07-15
  • 打赏
  • 举报
回复
运算符的运算顺序与优先级和结合性有关。
1、运算符先以优先级来结合操作数来进行运算
2、优先级相同时,依据结合顺序来结合操作数
>>和<<的优先级相同,均为第5级,这时计算根据结合顺序来结合操作数,其结合顺序为自左至右。
456 >> 4 << 4
先左:>>结合456和4
再右:<<结合(456 >> 4)和4
SandyLJY 2005-07-15
  • 打赏
  • 举报
回复
那两者优先级应该相同阿,按从左到右的顺序阿
qfeng_zhao 2005-07-15
  • 打赏
  • 举报
回复
应该相同
ningzhiyu 2005-07-15
  • 打赏
  • 举报
回复
应该是相同的。楼主也验证是相同的啦。
再说尽信书不如无书啊:)
OpenHero 2005-07-15
  • 打赏
  • 举报
回复
优先级应该相同
kernelxu 2005-07-15
  • 打赏
  • 举报
回复
对头!
呵呵,谢谢 whatsouta(某疯子)完善!
K 2005-07-15
  • 打赏
  • 举报
回复
>> 和 << 优先级是相同的,按照从左到右的顺序运算

15,446

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧