一次比较给我带来的麻烦 作者:憨牛 单片机中常常遇到一个变量和一个常数来比较,当用判断来做时没有任何问题. 如:前面定义了unsignedchar data m; if(m>=25) M=25; else m=0; 但是如果写成if(m-25>=0)有时会出现什么后果呢? 当m<25时,其差为负数,但是前面定义了m为非负的整数,这样其差就会是一个很大的正数(255-(25- m)),这样总是执行m=25;else永远得不到执行,程序就会出现我们意想不到的后果。这是我们不想看到的 结果,所以当我们对二个数进行比较时最好用判断,不用减法,用减法时要把变量定义成char data就可以 了,注意char最大只有127个呦。加法也要注意不能超过一个字节的大小,当然我们估计化在没有借位或借 位的情况下还是能做相应的加减的。 |