芯片:C6672 仿真器:XDS560V2PLUS 环境:CCS7.3 编译器:7.4.24
定义变量如下:
赋初值0
运算如下:
结果:a=2;b=1;c=2;
提问:
为什么运算b的时候 1+1=1了 而像运算c那样 强制转换一下 结果又对了?
Shine:
改成b=(!Test.bit.BIT0) && (!Test.bit.BIT0)+!Test.bit.BIT1;试试
,
user4428457:
试了 没用啊 好像不是优先级的问题
,
Shine:
可以看一下反汇编窗口的汇编代码是怎么样的?
,
user4428457:
反汇编如下 看不太懂 麻烦帮忙解释一下 谢谢!
,
user1428143:
运算优先级问题。先算加减、再做逻辑&&。强制转换过程实际是调整了计算优先级,先算的逻辑&&,再算的加法。