打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
c编码错误分析

一、数字和表达式的错误

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
、没有把握的用法不要用,常规用法是最正确和最安全的。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
C 的 lambda 表达式,你总得知道一点儿
Linux下gdb调试工具的使用
C# 3.0语言新特性(语言规范):1 具有隐式类型的局部变量
C语言赋值语句详解
高级语言程序设计A第3次作业
漫谈C++重载运算符
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服