首页 > 编程语言 >高质量C/C++编程指南总结(四)—— 表达式和基本语句

高质量C/C++编程指南总结(四)—— 表达式和基本语句

时间:2024-07-14 15:19:43浏览次数:14  
标签:语句 变量 编程 C++ flag 循环 value 表达式

1. 运算符优先级

  • 如果代码行中的运算符比较多,用括号确定表达式的操作顺序,避免使用默认的优先级。

 

2. 复合表达式

  • 不要编写太复杂的复合表达式。
  • 不要有多用途的复合表达式。
  • 不要把程序中的复合表达式与“真正的数学表达式”混淆。

 

3. if 语句

  • 不可将布尔变量直接与 TRUE、 FALSE 或者 1、 0 进行比较。
if (flag)    //表示flag为真
if (!flag)    //表示flag为假
  • 应当将整型变量用“ ==”或“! =”直接与 0 比较。
if (0 == value)
if (0!= value)
  • 不可将浮点变量用“ ==”或“! =”与任何数字比较。
if (value >= -EPSINON && value <= EPSINON)    //EPSINON表示允许的误差(精度)
  • 应当将指针变量用“ ==”或“! =”与 NULL 比较。
if (NULL == p) 
if (NULL != p)

 

4. 循环语句的效率

  • 在多重循环中,如果有可能,应当将最长的循环放在最内层,最短的循环放在最外层,以减少 CPU 跨切循环层的次数。
  • 如果循环体内存在逻辑判断,并且循环次数很大,宜将逻辑判断移到循环体的外面。

打断了循环“流水线”作业,使得编译器不能对循环进行优化处理,降低了效率。

如果循环次数非常大,最好将循环语句写在判断语句内,这种的写法,可以提高效率。

如果循环次数非常小,两者效率差别并不明显,采用循环语句写在判断语句外的写法比较好,因为程序更加简洁。

 

5. for 语句的循环控制变量

  • 不可在 for 循环体内修改循环变量,防止 for 循环失去控制。
  • 建议 for 语句的循环控制变量的取值采用“半开半闭区间”写法。

 

6. switch 语句

  • 每个 case 语句的结尾不要忘了加 break,否则将导致多个分支重叠(除非有意使多个分支重叠)。
  • 不要忘记最后那个 default 分支。 即使程序真的不需要 default 处理,也应该保留语句 default : break。



 

标签:语句,变量,编程,C++,flag,循环,value,表达式
From: https://www.cnblogs.com/moyu557/p/18301592

相关文章

  • 函数式编程的交响曲:探索LangChain对函数式编程特性的支持
    函数式编程的交响曲:探索LangChain对函数式编程特性的支持引言在现代软件开发中,函数式编程(FunctionalProgramming,FP)以其独特的优势,如无副作用、易于并行处理等,逐渐受到开发者的青睐。LangChain作为一个多语言编程工具链,其设计理念在于支持多种编程范式,包括函数式编程。......
  • 高质量C/C++编程指南总结(三)—— 命名规则
    标识符应当直观,可望文知义。标识符的长度应当符合“min-length&& max-information”原则。命名规则尽量与所采用的操作系统或开发工具的风格保持一致。程序中不要仅靠大小写区分相似的标识符。程序中不要出现标识符完全相同的局部变量和全局变量。变量的名字应当使用“......
  • C++ PImpl模式、指向实现的指针、PImpl Idiom、隐藏实现细节
    C++PImpl模式、指向实现的指针、PImplIdiom、隐藏实现细节flyfishPImpl全称是“PointertoImplementation”,在中文中通常翻译为“指向实现的指针”或者“指向实现”。PImpl是一种编程技巧,通常用于C++中,通过这种技术,可以隐藏类的实现细节,达到信息隐藏和二进制兼容......
  • C++ 面试宝典之:空类大小究竟是不是 0?
    以下内容为本人的学习笔记,如需要转载,请声明原文链接微信公众号「ENG八戒」https://mp.weixin.qq.com/s/pD4bIjX2kDzo8gbYRPktPQ首先,空类是什么?空类指的是不包含任何数据成员的类,但可能包含方法成员。实例化时,对象需要分配存储空间用于存放数据成员,数据成员的大小和数量......
  • Java 异常艺术:自定义异常的魔力——解锁编程的新维度
    超越常规的错误管理在编程的宇宙中,错误和异常如同星云般存在,既神秘又充满挑战。Java的异常处理机制,尤其是自定义异常,为我们提供了驾驭这一领域的强大工具。本文将引领你深入自定义异常的奥秘,不仅从基础讲起,还将通过一系列详尽案例和扩展讨论,展现其在实际开发中的无限可能......
  • Java并发编程 - ReentrantLock
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录一、ReentrantLock是什么?二、基本使用2.1基本语法2.2经典案例-取款问题2.2.1不加锁情况2.2.2使用ReentrantLock三、特性3.1可重入3.2可打断3.2.1无竞争3.2.2有竞争-获取不到锁3.3.3......
  • 高质量C/C++编程指南总结(二)—— 文件版式
    1.空行在每个类声明之后、每个函数定义结束之后都要加空行。在一个函数体内,逻揖上密切相关的语句之间不加空行,其它地方应加空行分隔。2.代码行一行代码只做一件事情,如只定义一个变量,或只写一条语句。这样的代码容易阅读,并且方便于写注释。if、for、while、do等语句......
  • 高质量C/C++编程指南总结(一)—— 文件结构
    1.版权和版本的声明应位于头文件和定义文件的开头,主要包括的内容有:版本信息。文件名称、文件标识、摘要。当前的版本号、作者/修改者、完成日期。历史版本信息(取代版本、原作者、完成日期)。2.头文件结构为了防止头文件被重复引用,应当使用ifndef/define/endif结构产生......
  • 深入解析C++中的特殊成员函数:构造函数、析构函数、拷贝构造函数与赋值操作符
    深入解析C++中的特殊成员函数:构造函数、析构函数、拷贝构造函数与赋值操作符在C++编程的浩瀚宇宙中,构造函数、析构函数、拷贝构造函数和赋值操作符是构成对象生命周期和行为的四大基石。它们各自扮演着不可或缺的角色,确保了对象从创建到销毁,从复制到赋值的整个过程既安全又......
  • OpenFlow 是一个网络通信协议,它允许网络管理员通过中央控制器(如 OpenFlow 控制器)来编
    OpenFlow是一个网络通信协议,它允许网络管理员通过中央控制器(如OpenFlow控制器)来编程定义网络中的数据包转发行为。OpenFlow协议通常用于软件定义网络(SDN)架构中,其中网络控制平面与数据转发平面是分离的。在Python中,直接编写与OpenFlow交换机交互的代码通常涉及使用......