在调试STM32时,发现了一个奇怪的问题

2019-03-23 19:00发布

在调试STM32时,发现了一个奇怪的问题:事例程序如下:
uint8_t a,b,c;
a = 0x80;
b = 0x04;
c = a>>4 + b<<4;
c的结果竟然不正确,太怪了,那位大神知道什么原因吗???
必须改成这样才能计算正确:
a = a>>4;
b = b<<4;
c = a + b;
这样c的结果就正确
此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
深蓝恋风
1楼-- · 2019-03-23 22:09
 精彩回答 2  元偷偷看……
深蓝恋风
2楼-- · 2019-03-23 22:23
“+” 的优先级 比 移位的优先级高,所以就会先进行加运算,再移位的。
这样写才对:c = (a << 4) + (b >> 4);   
qirick
3楼-- · 2019-03-24 04:11
谢谢大神啊,一语惊醒啊!!!!
exiao
4楼-- · 2019-03-24 05:17
 精彩回答 2  元偷偷看……
caojuxian1212
5楼-- · 2019-03-24 10:20
不清楚运算符的优先级,就多使用括号,这样就可以按照你自己的意愿来实现了

一周热门 更多>