欢迎来到天天文库
浏览记录
ID:27396801
大小:100.86 KB
页数:23页
时间:2018-12-03
《嵌入式软件c语言可靠性设计问的题目汇总情况》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、实用标准文案嵌入式软件可靠性设计问题集锦目录1、程序员理解错误21.1、英文标点被误写成中文标点;21.2、+=与=+、-=与=-容易混21.3、程序员输入错误21.4、数组问题21.5、switch…case语句中的 break关键字31.5、变量赋值31.6、指针的加减运算41.7、增量运算符++和减量运算符--52、编译器语义检查62.1、数据类型问题62.2、误加标点符号62.3、编译器忽略掉多余的空格符和换行符62.4、数组越界。72.5、数组声明具有外部链接时大小应显式声明72.6、编译器检查不出数组越界82.7、编译器与volatile限
2、定符92.8、定义为volatile的变量的作用过程112.9、局部变量必须显式初始化113、不合理的优先级123.1、常规使用可能引起误会的运算符134、隐式转换和强制转换134.1、有符号和无符号char和short类型自动转换134.2、混合数据类型运算中会转换成较高级别数据类型144.3、赋值语句计算结果被转换成被赋予值的变量类型154.4、作为函数参数被传递时的数据类型转换154.5、C语言强制类型转换规则154.6、通用编程建议155、判错155.1、具有形参的函数,需判断传递来的实参是否合法。165.2、仔细检查函数的返回值175.3、防
3、止指针越界175.4、防止数组越界175.5、数学运算185.6、其它可能出现运行时错误的地方206、容错206.1、关键数据多区备份,取数据采用“表决法”206.2、非易失性存储器的数据存储216.3、软件锁21精彩文档实用标准文案6.4、通信数据的检错216.5、开关量输入的检测、确认226.6、开关量输出226.7、初始化信息的保存与恢复226.8、陷阱226.9、while循环226.10、系统自检22精彩文档实用标准文案1、程序员理解错误1.1、英文标点被误写成中文标点;比较运算符==误写成赋值运算符=,代码if(x=5){…}本意是比较变量
4、x是否等于常量5,但是误将’==’写成了’=’,if语句恒为真。如果在逻辑判断表达式中出现赋值运算符,现在的大多数编译器会给出警告信息。并非所有程序员都会注意到这类警告,因此有经验的程序员使用下面的代码来避免此类错误: if(5==x){…}将常量放在变量x的左边,即使程序员误将’==’写成了’=’,编译器会产生一个任谁也不能无视的语法错误信息:不可给常量赋值! 1.2、+=与=+、-=与=-容易混复合运算符会给程序带来隐含Bug,如下所示代码: tmp=+1;该代码本意是想表达tmp=tmp+1,但是将复合赋值运算符+=误写成
5、=+:将正整数常量1赋值给变量tmp。编译器会欣然接受这类代码,连警告都不会产生。-=与=-同理。类似的逻辑与&&、位与&、逻辑或
6、
7、、位或
8、、逻辑非!、位取反~等。字母l和数字1、字母o和数字0也易混淆,这种情况可借助编译器来纠正。1.3、程序员输入错误阿拉伯数值输入,宏变量宏定义方式实现。防止多次录入数字出现手误。 1.4、数组问题C语言数组下标从0开始。定义inta[30],是从a[0]~a[29]。1.5、switch…case语句中的 break关键字 switch…case语句可以很方便的实现多分支结构。漏加break,引起顺序执行多个ca
9、se语句;break关键字用于跳出最近的那层循环语句或者switch语句。network code() { switch(line) { case THING1: doit1(); break; 精彩文档实用标准文案 case THING2: if(x==STUFF) { do_first_stuff
10、(); if(y==OTHER_STUFF) break; do_later_stuff(); } /*代码的意图是跳转到这里… …*/ initialize_modes_pointer(); break; default
11、: processing(); }
此文档下载收益归作者所有