我正在寻找一个传统的嵌入式项目,其中包含用于16位MCU的微芯片C30编译器.有一种预期的情况,索引从0xFF回绕,我认为这是预定义的行为.然而,下面的代码总是把我抛弃//悲伤:(当我希望最终快乐的时候.
unsigned char index = 0xFF; unsigned char check = 0x02; if(check == index +3){ //happy! }else{ //sad :( }
现在,如果我专门将它转换为unsigned char:
unsigned char index = 0xFF; unsigned char check = 0x02; if(check == (unsigned char) index +3){ //happy! }else{ //sad :( }
它有效,我最终开心!那么我错过了什么?这只是编译器依赖的行为吗?