关于程序中出现的一些问题(容易被忽视的)
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)的检测程序始终没有机会被执行。
修改后的程序如下:
原因:举例:若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)的检测程序始终没有机会被执行。
修改后的程序如下:
相关文章推荐
- 关于图形化编程软件sikuli 初学者使用时可能容易出现的一些问题
- 关于在win8下面安装虚拟机出现的一些问题
- 关于使用ISA代理导致一些网上银行出现不能正常打开的问题
- 关于Linux下alsa录音程序移植出现的奇怪问题
- 【原】关于使用jieba分词+PyInstaller进行打包时出现的一些问题的解决方法
- static 修饰的变量在程序中容易出现的问题
- 有关于C++的一些程序设定问题
- 运行cf程序出现的一些问题
- 关于Qt开发MySQL程序移植后出现"Driver not loaded"的问题
- 关于使用Eclipse编辑Android程序出现R文件消失的问题
- Visual C++ Tips: 程序执行路径,一个容易被忽视的问题
- 关于Java web程序中出现Server Tomcat v8.0 Server at localhost failed to start.的问题解决办法
- 关于调试程序容易忽略的问题
- 关于Tomcat安装过程中出现的一些问题...
- 关于VS2013中出现的一些问题及解决方案
- 关于31天App教程示例中一些因SDK版本而出现的问题(转)
- 关于启动wampserver出现的php.exe 无法启动此程序问题的解决
- 利用Struts 处理 web程序时 一些容易出错的问题
- 关于kDSplitPane1在列表界面使用中出现的一些问题
- 关于写数3缺1程序过程中出现的问题总结