标题:运算优先级
只看楼主
ming561
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2021-12-13
结帖率:100%
已结贴  问题点数:20 回复次数:4 
运算优先级
flag = DATA_SAVE_BUFF_LEN - write_flash_num  + (PAGE_SIZE >> 2);
运算时没有先算括号里的
有警告: Operator '<<' has lower precedence than '+'; '+' will be evaluated first
搜索更多相关主题的帖子: Operator first 运算 优先级 括号 
2021-12-13 10:53
diycai
Rank: 8Rank: 8
等 级:贵宾
威 望:19
帖 子:147
专家分:895
注 册:2021-5-18
得分:5 

运算符优先级一般是编写编译器的时候需要重点关注的问题。
写普通程序建议尽量在容易产生歧义的地方加上括号,这样读者更清晰易懂。
2021-12-13 11:18
ming561
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2021-12-13
得分:0 
回复 2楼 diycai
我已经加上括号了呀
2021-12-13 13:16
diycai
Rank: 8Rank: 8
等 级:贵宾
威 望:19
帖 子:147
专家分:895
注 册:2021-5-18
得分:15 
回复 3楼 ming561
宏定义PAGE_SIZE  加括号了吗?
比如 #define PAGE_SIZE     256+256
那么 PAGE_SIZE >> 2 就等于 256+256>>2 而不是 (256+256)>>2, 虽然两者是一样的。
但是如果你用 PAGE_SIZE * 2,那么结果就不一样了。
2021-12-13 13:23
ming561
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2021-12-13
得分:0 
回复 4楼 diycai
傻了,是我宏定义也有移位,没加括号
2021-12-13 13:40



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-507858-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.287336 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved