优化掉了。无意义的局部变量赋值,编译器认为是可以砍掉的。
这句话不是没有执行,是因为每次执行后,开始循环,这个循环的开始阶段又将a的值复为,造成没有执行程序的假象,希望能对你有帮助!
因为a=2在while循环里,一直一直都是a=2,所以把a=2这句放在while前面一行就行了
volatile uchar a ; //搞定!