keil里面为什么if条件满足了,但里面有一调语句执行不了?

发布网友

我来回答

4个回答

热心网友

优化掉了。
无意义的局部变量赋值,编译器认为是可以砍掉的。

热心网友

这句话不是没有执行,是因为每次执行后,开始循环,这个循环的开始阶段又将a的值复为,造成没有执行程序的假象,希望能对你有帮助!追问我用单步调试了,确实没有执行,如果num==14;走到num++后直接到num=0;这一句了。

追答那就是被编译器优化掉了!!

热心网友

因为a=2在while循环里,一直一直都是a=2,所以把a=2这句放在while前面一行就行了

热心网友

volatile uchar a ; //搞定!追问我知道,已经试过了,可以,可是不知道为什么

追答主要是后面用不上,就被优化掉了!我常常用:
a=0;
a++; a--;
的办法来保证不被优化。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com