一、数字和表达式的错误
1)运算符号和优先级的错误
最常见的运算符号错误就是“= =”和“=”的误用
#include <stdio.h>
main()
{
int ret = 0;
ret = GetVars();
if (ret = VOS_OK)
{
...
}
}
错误后果:
1、变量被错误赋值。
2、判断逻辑不正确
建议和结论:
1、尽管是初级bug,但是还是总有发生。做好PC-Lint、编译告警消除、单元测试,能解决很多这样的低级错误。
2、有人喜欢写成“VOS_OK == ret”的方式避免这样的错误,但是也有人认为这样不美观。
还有一个常见的就是“++和“--”在表达式中的使用。
#include <stdio.h>
main()
{
int x = 0;
int i = 0;
int a[10];
char * p = (char*)a;
x = i++; /* x=0, i=1 */
x = ++i; /* x=2, i=2 */
a[i] = i++; /* by compiler */
x = (i+1)++; /* error */ (必须是左值)
((int*)p)++; /* error in ANSI*/
}
错误后果:
赋值不正确。
建议和结论:
1、“i++”和“++i”这样的基础知识还是要记住的。
2、自增变量/自减变量,在本表达式中不要再引用,否则计算顺序依赖编译器实现。
3、自增和自减的操作数必须是“左值”
4、没有把握的用法不要用,常规用法是最正确和最安全的。
联系客服