更多课程 选择中心

C/C++培训
达内IT学院

400-111-8989

C语言程序员在编码时容易出错的几个点

  • 发布:C++培训
  • 来源:学习笔记
  • 时间:2017-09-08 09:43

本期讲讲工作以来,自己碰到或者他人碰到的几个C语言编码易错点。限于篇幅,这边只举了几个例子作为抛砖引玉,欢迎大家留言说说自己遇到的其他易错点。接下来提到的几个易错点的特点为看似非常基础,但是犯错的不在少数。

sizeof

sizeof是C/C++中的一个操作符,其作用为返回一个对象或者类型所占的内存字节数。敲黑板:记住了,sizeof的基本单位是字节。易错点之一为:使用sizeof去计算非char类型的数组元素个数,这是不对的。如果要统计一个数组的元素个数,可以通过如下方式:

sizeof(ArrayName) / sizeof(ArrayName[0]) 或者

sizeof(ArrayName) / sizeof(ArrayType)

C语言编码易错点

"=="与"="

在条件表达式中,我们经常用"=="进行变量与数值进行比较作为某段代码执行的入口条件。但是如果编写代码时候不注意,漏写了一个"=",程序运行就与原先设想千差万别,而且编译器不会有任何告警,如果工程比较大,排查起来会非常困难。还是上面的例子:

所以,很多编码规范中,会明确设定一个规则:对于此类if表达式,规定数值写在==左侧,被比较的变量或者表达式放在==右侧。这样,即便一时手快漏写了一个=,编译的时候会产生error,迫使编码者修正。

switch...case语句

关于switch...case语句有两个易错点。一个是在case块结束后漏写了break,导致程序运行偏离预期;另外一个是,在的确需要fall through的时候,没有进行必要的注释,导致不明真相的吃瓜程序员以为是第一种情况,随手补上了break。所以在每次进行switch语句编码的时候,记得完成后再检查一次代码,防止漏写break;另外在需要fall through的时候,一定要有fall through关键字以及注明清楚这样写的缘由。

其他

字符型常量使用单引号括起来,字符串常量使用双引号括起来。

使用错误的逻辑表达式,如企图用if(a < b < c)表达if((a < b) && (b < c))。

对于复合表达式,没有使用()明确优先级,导致由于混淆了操作优先级而程序非预期运行,例如if(x = z == y) 理解为if((x = z) == y)。

预约申请免费试听课

填写下面表单即可预约申请免费试听!怕钱不够?可就业挣钱后再付学费! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!

上一篇:值得学习的编程语言有哪些?10种有前途的编程语言推荐
下一篇:C语言排序算法有哪些?C语言中三种常见排序算法分析

C语言创建windows窗口实例

C++回调函数是什么?

C++ shared_ptr和动态数组

C语言有哪些关键词,C语言44个关键词大全

  • 扫码领取资料

    回复关键字:视频资料

    免费领取 达内课程视频学习资料

  • 搜索抖音号

    搜索抖音号:1821685962

    免费领取达内课程视频学习资料

Copyright © 2021 Tedu.cn All Rights Reserved 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有

选择城市和中心
黑龙江省

吉林省

河北省

湖南省

贵州省

云南省

广西省

海南省