我在用IAR在线调试的时候,发现一个问题,比如:有一个函数是:decode(u8 id) { if(id ==0x01) { a = 0x01; } if(id == 0x02) { b = 0x01 } } 我在调试的时候函数是这样的:decode(0x02) 但是单步执行到函数里面发现一下几种情况:1.id 的确是0x02,但是他两个if分支都去执行了;2.函数执行进去之后就不是0x02而是其他任意值,两个分支还是都执行,但是奇怪的是只有调试的时候这样,板子在机子上运行的时候没有任何异常。想问一下这是为什么?谢谢!在线等。。。。。 |
2、第一个if中应该清零变量b,第二个if 中应该清零变量a,否则只要执行一次,变量a和b就一直是0x01了,
3、其实只要使用变量a来置零或置1就够了,变量b是多余的。
???
1.会是没有加else的原因么?
2.我的a和b不需要清零,只要根据id的值赋相应的值即可,现在是主要问题是id的问题,也就是if分支执行异常的问题,明明id==0x01,结果if两个分支都去执行?为什么?
网上剪贴的关于if-else:
也发现问题,是我师傅对照汇编看出来的
嗯嗯,好的,我回去看看,谢谢
嗯嗯,有时间了试试看