注册 登录
编程论坛 C语言论坛

运算优先级

ming561 发布于 2021-12-13 10:53, 1435 次点击
flag = DATA_SAVE_BUFF_LEN - write_flash_num  + (PAGE_SIZE >> 2);
运算时没有先算括号里的
有警告: Operator '<<' has lower precedence than '+'; '+' will be evaluated first
4 回复
#2
diycai2021-12-13 11:18
只有本站会员才能查看附件,请 登录

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