本帖最后由 woshigeshuai 于 2021-4-9 09:59 编辑
unsigned char dataTest;
dataTest=3;
if((u8)(dataTest-0x40) < 0x31) //
{
dataTest=0; //
}
else
dataTest=1; 正确到这里
// --------------------------------------------------------------
unsigned char dataTest;
dataTest=3;
if((dataTest-0x40) < 0x31) //
{
dataTest=0; // 错误到这里 dataTest-0x40=0XFFC3 ,会认定是负数
}
else
dataTest=1;
使用的是IAR MSP430 开发环境, 我是一名合肥的单片机开发者,有兴趣加个好友,交流交流 |
如果IF(..<0X71) { } ELSE { },什么事都没有。要专注于过程及中间变量。
这叫做中间值溢出,错误的。不能差值比较,应是正值比较,或者数据类型为CHAR.