目录
表达式和基本语句
运算符的优先级
复合表达式
条件判断语句
for语句与switch语句
goto语句
总结:
表达式和基本语句
运算符的优先级
文章图片
C++/C里面的运算符的数量挺多的,没必要一个一个的记忆他们的优先级和结合律,熟练一些经常使用的运算符的优先级,如果不太确定优先级顺序,建议直接用括号括起来,确定表达式的操作顺序,避免使用默认的优先级。
复合表达式
写一些简单的复合表达式可以提高编译效率,并且书写整洁。例如a=b=c=0;
但是如果是这样:
i = a >= b && c < d && c + f <= g + h;
看完了以后,估计很少人知道这句话是什么意思。还要关心运算符的优先级,所以太复杂,不友好,容易出错。不建议使用这种方式。
条件判断语句
if语句是非常常用的语句,但是也有很多小细节值得注意。
1、不可将布尔变量直接与true、false或者1、0进行比较。
true、false的值究竟是什么并没有统一的标准。VC++与VB中的true的值就完全相反。正确的写法应该是:if (flag) 或者 if (!flag)。
不规范的写法:if (flag == true), if (flag == 1)等等。
2、整型变量与0值比较,规范的写法是 if (value =https://www.it610.com/article/= 0), if (value != 0)。不可模仿bool变量的风格。
3、不可将浮点类型变量用 == 或者 != 与任何数字比较。原因是无论是float与double类型的变量,它们都有精度限制,避免直接比较。应该设法转化成>= 或者 <=的形式。例如:
if ((double)x == 0.0) //隐含错误的比较
在VS2017版本中,允许的误差为DBL_EPSILON(精度),所以上面应该转化为
if ( (x>=-DBL_EPSILON) && (x<=DBL_EPSILON) )
4、判断指针变量是否为空,不要写成if (p == 0)或者if (p != 0)这种形式,虽然空值(NULL)与0相同,但是意义不同。
if (p == NULL) //强调p是指针变量,其他两种形式 if (p == 0)或者 if (!p)分别强调的是p是整型变量或者布尔变量。
延伸for语句与switch语句
条件判断语句中的 “==”其实也有个小细节,当一个常量比较的时候可以将常量写在前面,比如 if (NULL == p),这样写的好处是如果哪一天写代码少些了一个等于号,系统会报错,因为常量无法被修改。
在for循环体中,不可修改循环变量,会导致逻辑紊乱,for循环失去控制。对于变量空间范围,应当采取半开半闭区间的写法,即for (int i = 0; i
延伸switch语句应当注意每个case语句后面的break,除非有意的使多个分支重叠,其他都得加上break。而且结尾的default不要忘记,就算没有想要的default,也要加上一句 default :break;
循环效率:
多层循环嵌套时,如果有可能,最好将长循环放在内层,段循环放在外层,减少CPU跨切换层的次数。
如果循环体中存在条件判断,如果可能,最好放在外面。
goto语句
goto语句不建议使用,但不代表不能使用,一定特殊的场景goto语句有奇效。书上的一句话说的很好 “错误是程序员自己造成的,不是goto 的过错”,对于多重循环体需要跳出时,goto语句是不错的选择,避免多层break;
总结: 【读书|读高质量C++/C编程指南第4章】这一章讲的都是我们常用的表达式和语句,着重讲了我们容易忽略掉的细节,对于有一定基础的道友们回过来再看看这一章也能学到很多新知识。
推荐阅读
- 数据结构|二叉树需要掌握的基本知识
- 读书|读高质量C++/C编程指南1-3章
- 数据结构|八大经典排序算法
- 前端|Vue 学习笔记(一)
- 程序员|Android面试题精选——再聊Android-Handler机制-2,android实战教程
- 面试|三流面试聊技术,二流面试聊框架,一流面试…
- JAVA人生|被阿里 P10 面试了,评价(有点水平)
- Java|愤世嫉俗的程序员,总在网上发表言论,当起了“键盘侠”
- c语言|5、C语言队列与应用