4 表达式和运算

4.1 比较操作中将常量设置为左值

等级: 【推荐】
说明:编写代码时,如果将常量设置为右值。可能因马虎将“==”写成“=”导致逻辑错误。这种场景下,编译器是不会报错的,代码检查也比较容易被忽视。
        例子:

std::string::size_type index = str.find("a");
if ( index = std::string::npos){
}

上例中写法可以执行,但是逻辑是错的。如下编写,可以借助编译器检查出问题:

std::string::size_type index = str.find("a");
if ( std::string::npos = index ){
}

4.2 除法操作要判断除数是否为0

等级: 【必须】

4.3 乘法或加法运算需考虑结果溢出场景

等级: 【必须】

4.4 不使用复杂的复合结构

等级: 【推荐】
说明:比如不要多次嵌套使用“:?”运算符。复杂的复合结构将使代码不易阅读和理解。

4.5 不要在条件表达式中赋值

等级: 【推荐】
说明:避免出现==、=和!=等在条件表达式中出现,可以避免手误,也可以提高增加代码可读性。

4.6 对浮点数不要做相等或不等比较

等级: 【推荐】
说明:浮点数运算中经常产生误差,=和!=操作可能会返回期望相反结果。

4.7 尽可能使用sizeof(变量)而非sizeof(类型名)

等级: 【要求】
说明:这样方便代码的维护,将不至于之后修改变量类型后,sizeof计算出错。注意:对象指针使用sizeof后得出的是指针大小,而非对象大小

4.8 尽量避免使用位运算

等级: 【要求】
说明:除非对内存使用和效率非常高的情况下,尽量避免使用位运算。这可以使用提高代码的可读性。

4.9 offsetof宏

等级: 【必须】

说明:不要自己估算结构体中成员变量偏移,而使用offsetof宏进行计算。

(转载请指明出于breaksoftware的csdn博客)

Windows客户端C/C++编程规范“建议”——表达式和运算相关推荐

  1. Windows客户端C/C++编程规范“建议”——前言

    前言 工作中接触了很多编程规范.其中最有意思的是,公司最近发布了一版C/C++编程规范,然后我看到该规范的最后一段时,有这么一句:"该规范不适用于Windows平台开发".看来这份 ...

  2. Windows客户端C/C++编程规范“建议”——风格

    9 风格 9.1 优先使用匈牙利命名法 等级: [推荐] 说明:该方法由微软总设计师设计.Windows上编程最好遵从该标准.详细介绍见:http://zh.wikipedia.org/wiki/%E ...

  3. Windows客户端C/C++编程规范“建议”——宏

    6 宏 6.1 减少宏的使用 等级: [建议] 说明:宏的使用,将使得调试变得麻烦.所以在设计和使用宏的时候,请确保宏的逻辑是阅读者不会去关心细节的行为. 6.2 宏定义中字母需大写 等级: [必须] ...

  4. Windows客户端C/C++编程规范“建议”——结构

    5 结构 5.1 不要使用goto 等级: [必须] 说明:在大型项目中,goto的滥用会导致灾难性后果.因为我们程序中一般不存在从一个函数体内部跳转到另一个函数体内部的场景,所以我们可以将跳转控制在 ...

  5. Windows客户端C/C++编程规范“建议”——函数

    1 函数 1.1 代码行数控制在80行及以内 等级:[要求] 说明:每个函数的代码行数控制应该控制在80行以内.如果超过这个限制函数内部逻辑一般可以拆分.如果试图超过这个标准,请列出理由.但理由不包含 ...

  6. Windows客户端C/C++编程规范“建议”——变量和常量

    8 变量和常量 8.1 尽量不要使用全局变量 等级: [要求] 说明:全局变量的滥用和goto的滥用一样,都是一种灾难.它将使得逻辑变得难以调试和控制. 8.2 不涉及外部使用的全局变量需要使用sta ...

  7. Windows客户端C/C++编程规范“建议”——文件

    7 文件 7.1 正确使用#include 等级:[推荐] 说明:#include <>和#include ""导致编译器在搜索文件时,搜索的路径顺序不同.所以需要正确 ...

  8. Windows客户端C/C++编程规范“建议”——函数调用

    3 函数调用 3.1 谨慎使用递归方法 等级: [推荐] 说明:递归方式控制不当,可能会导致栈空间不够而崩溃.一般的递归都可以使用循环代替. 3.2 不要使用using namespace 等级: [ ...

  9. Windows客户端C/C++编程规范“建议”——指针

    2 指针 2.1 尽量使用智能指针 等级: [推荐] 说明:正确使用智能指针可以省去指针管理的工作. 2.2 类成员变量指针释放后一定要置空 等级: [必须] 说明:如果类成员变量指针在释放后没有置空 ...

最新文章

  1. Linux命令行与命令
  2. DTCC 2020 | 阿里云程实:云原生时代的数据库管理
  3. Visual Studio 2017的第五个更新包扩展了调试工具
  4. 2019春季学期进度报告(十四)
  5. 技术对游戏公司来讲到底有多重要?
  6. win7 蓝牙4.0 ble驱动_Android FrameWorkamp;HAL视频最新进度: 蓝牙更新6节(更新时间2019年3月27日)...
  7. Linux查看vga分辨率,调整ubuntu启动界面vga分辨率的方法
  8. Windows MSDOS的批处理文件命令
  9. ELEMENT UI中关于上传图片el-upload控件删除(同时删除后台图片信息)
  10. lol7月9日服务器维护,英雄联盟7月9日更新维护到几点结束_lol7月9日10.14版本更新维护结束时间介绍_咖绿茵手游站...
  11. 【SAP】在制品报表 查询及结算余额查询
  12. 大数据高级开发工程师——Spark学习笔记(9)
  13. 用串口操作手机收发短信总结
  14. 吉林大学计算机专业扩招吗,我国有所“退步严重”的985大学,为了大盲目扩招,已被考生嫌弃...
  15. 什么是时间复杂度与空间复杂度
  16. Java根据日利率计算等额本息每月还款
  17. 美国佐治亚大学计算机专业,美国计算机专业大学排名TOP10
  18. 系统主题修改桌面嵌入html,更换主题桌面主题 Win7桌面动态主题怎么更换
  19. 10个流行常用的Django第三方包-大江狗推荐
  20. vue中echarts纵轴添加点击事件

热门文章

  1. HDU - 3078 Network 倍增LCA
  2. 一、网页端文件流的传输
  3. c语言字符串 s,c – printf格式字符串中“% – *.* s”的含义是什么
  4. python close函数_Matplotlib的close()函数使Tkinter GUI窗口关闭
  5. 安装Nginx的方法教程
  6. UE5真实环境设计入门学习教程
  7. ldconfig及 LD_LIBRARY_PATH
  8. 斐波那契算法举例(iterative Fibonacci algorithm)
  9. C++ 中emplace_back和push_back差异
  10. C++的STL栈实现获取栈中最小元素的成员