您的位置:首页 > 其它

关于程序中出现的一些问题(容易被忽视的)

2015-04-27 21:30 323 查看
问题1:在程序中定义了 u8 num=XXX;(或 u16 或 unsigned char 类型,这些类型都有一个共同特点:都为无符号型),那么我希望在程序中写 if(num<0)num=0; 从而实现num始终保持在0及其以上时,这个程序是有可能有问题的。

原因:举例:若num的原值为200,那么经过程序num-=300;后,由于num为无符号数,num并不会小于0,而是从最大值处开始算起,故 if(num<0)num=0;这段程序并没有执行。

解决办法:就是用非无符号型就可以了,如int型。

问题2:STM32中,写一个Key_scan()函数,实现对两个或多个按键的检测,程序如下:

                       


其目的是希望检测完PE.3后继续检测PE.4,但实际只会检测到PE.3,而PE.4的检测程序不管如何也不会被执行。

原因:不管KEY1按下与否,KEY1的检测程序是肯定执行的,那么就意味着必定执行到return语句,一旦执行了return语句就退出了Key_scan函数,故其下面的PE.4(也就是KEY0)的检测程序始终没有机会被执行。

修改后的程序如下:

                        
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: