《编码规范和测试方法——C/C++版》学习笔记 ·001
文章目录
- 一、编码规范的目的
- 二、相关知识补充
- 1、32位机下C++中各变量占用的字节数
- 2、按位操作
- 三、规范事项
- 1、把常量放在==左边
- 2、按位位移操作的右操作数必须小于操作的位数
- 3、不要对有符号的类型进行按位操作
- 4、不要在逻辑运算符[&&、||]的右操作数中出现自增、自减运算和函数调用
- 5、不要将两个整型变量相除的结果赋值给浮点类型变量
- 6、不要在逻辑表达式中使用自增自减运算符
- 7、不要在逻辑表达式中出现赋值语句
- 8、清晰表示不同类型变量与0的比较
- 9、不要对浮点类型变量进行等于/不等于的判断
一、编码规范的目的
要求开发人员遵守编码规范,主要有以下目的:
- 规范部门内软件开发和设计风格,保证所有人写出过风格一致的代码
- 增强代码的健壮性、可读性和可维护性
- 减少程序的潜在错误
二、相关知识补充
1、32位机下C++中各变量占用的字节数
数据类型 | 字节数 |
---|---|
short | 222 |
int | 444 |
long | 444 |
long long | 888 |
float | 444 |
double | 888 |
char | 111 |
指针 | 444 |
可以通过下面sizeof运算符来查看相应数据类型占用的字节数,如:
cout << sizeof(int) << endl;
指针类型的变量存储的是地址,任何类型的指针大小都一样,为4字节(32位机下)
2、按位操作
按位操作 | 运算符 |
---|---|
按位与 | & |
按位或 | | |
按位取反 | ~ |
按位异或 | ^ |
按位左移 | << |
按位右移 | >> |
按位操作的一个应用就是文件流同时以读写模式打开文件,读写模式可以用读的模式和写的模式进行按位或实现。
三、规范事项
1、把常量放在==左边
常量不是一个L-Value(左值),不可以被修改,如果将==
错写为=
,也会很快发现。
#include <iostream>using namespace std;int main()
{int iValue = 3;if (4 == iValue)cout << iValue << endl;return 0;
}
2、按位位移操作的右操作数必须小于操作的位数
此规则应用于32位操作系统中,移位位数超过32位之后,数值不会是0
#include <iostream>using namespace std;int main()
{unsigned uiValue = 0xfa;unsigned uiValueTest1 = uiValue >> 100;unsigned uiValueTest2 = uiValue >> 32;unsigned uiValueTest3 = uiValue >> 31;cout << hex << uiValue << endl; // facout << hex << uiValueTest1 << endl; // fcout << hex << uiValueTest2 << endl; // facout << hex << uiValueTest3 << endl; // 0return 0;
}
3、不要对有符号的类型进行按位操作
有符号类型的变量进行按位操作往往会出现很多问题。
4、不要在逻辑运算符[&&、||]的右操作数中出现自增、自减运算和函数调用
逻辑与、逻辑或,存在短路机制。如果只判断部分表达式中前某一部分就能知道整个表达式的值,后面的部分便不会再执行。
5、不要将两个整型变量相除的结果赋值给浮点类型变量
两个整数相除结果仍然为整数,会丢失小数部分。
6、不要在逻辑表达式中使用自增自减运算符
提高可读性,避免出错。
7、不要在逻辑表达式中出现赋值语句
提高可读性,避免出错。
8、清晰表示不同类型变量与0的比较
提高可读性,避免出错。
具体比较可参考以下代码:
#include <iostream>using namespace std;int main()
{int iValue = 10;bool b = false;int* piValue = NULL;if (0 == iValue)cout << "判断整型值是否为0" << endl;if (b)cout << "判断bool值是否为真" << endl;if (NULL == piValue)cout << "判断指针是否为空" << endl;return 0;
}
9、不要对浮点类型变量进行等于/不等于的判断
浮点类型存储小数是以近似相等的方式进行存储的,这其中存在精度问题。
如果要比较相等,只能用近似相等的方式,规定在某种精度内近似相等,这就需要两数之差的绝对值小于等于小于这个精度值。
《编码规范和测试方法——C/C++版》学习笔记 ·001相关推荐
- 《编码规范和测试方法——C/C++版》作业 ·003——宏定义作用整理、设计删除数组元素的函数
文章目录 一.宏定义(#define)的作用 1.普通宏 2.带参宏 [注]:特殊用法 3.其他用法和注意点 二.实际问题(函数设计) 1.原题 2.题解参考 (1).面向过程的设计 (2).面向对象 ...
- 《编码规范和测试方法——C/C++版》学习笔记 ·002
文章目录 一.相关知识补充 1.switch接受的参数类型 2.内存分区与数据存放 3.变量的作用域与生命期 4.调试开关的使用 二.规范事项 1.杂项 (1).for循环语句中只出现影响循环控制的变 ...
- 《编码规范和测试方法——C/C++版》作业 ·008——编写一个符合依赖倒置原则的简单学生管理系统
文章目录 问题描述 参考解答 整体架构 UML图 整体代码 MySQL-C-API封装 Model层 Dao层 Service层 Controller层 View层 主程序 测试环境 测试流程 测试效 ...
- 《编码规范和测试方法——C/C++版》作业 ·007——C++引入MySQL给C的API并简单封装
文章目录 问题描述 参考解答 API引入 API测试 一些问题 封装代码 测试环境 测试代码 测试结果 问题描述 使用MySQL为C提供的API,封装出一个访问MySQL数据库的类.要求至少能实现如下 ...
- 《编码规范和测试方法——C/C++版》作业 ·006——设计模式 · 模板方法
文章目录 一.设计模式-模板方法 1.简单介绍 2.框架演示 3.实际案例 一.设计模式-模板方法 1.简单介绍 简单来说,就是先在父类FFF中定义好一个函数AAA,然后这个函数AAA代表了一个操作M ...
- 《编码规范和测试方法——C/C++版》作业 ·005——设计一组员工类
问题描述 Cola公司的雇员分为以下若干类:ColaEmployee :所有员工总的父类属性:员工的姓名,员工的生日月份方法:getSalary(int month) 根据参数月份来确定工资,如果该月 ...
- 《编码规范和测试方法——C/C++版》作业 ·004——设计一个顺序表
问题描述 实现一个能够实现自动扩容ArrayList类的封装(不使用C++容器),主要至少具有增加.删除.求长的功能 参考解答 ArrayList.h文件 #ifndef ARRAYLIST_H #d ...
- 《编码规范和测试方法——C/C++版》作业 ·002——函数返回地址、static关键词用法整理
文章目录 一.函数返回地址的情形 1.函数返回值为指针 二.static关键字用法整理 1.static全局变量 2.static局部变量 3.static函数 4.类的static成员数据 5.类的 ...
- C++Primer第5版学习笔记(一)
C++Primer第5版学习笔记(一) 第一.二章的重难点内容 这个笔记本主要记录了我在学习C++Primer(第5版,中文版)的过程中遇到的重难点及其分析.因为第一.二章都比较简单,因 ...
最新文章
- 软件测试职业培训中心,软件测试工程师就业班
- 详细讲解MapReduce二次排序过程
- numpy中的ogrid
- Java单向链表操作详解
- 数据中台实战入门篇:数据中台对内、对外合作机制
- Jar文件的小小总结(原创)
- Ubuntu增加(swap)交换分区
- spring 配置jdbc/hibernate/jpa
- 两台服务器虚拟成一个ip地址,两台服务器如何用一个ip地址
- char、varchar、nchar、nvarchar的区别
- Failedto load class org.slf4j.impl.StaticLogger...
- 无代码时代来临,程序员如何保住饭碗?赶紧看一看!
- NYOJ 取石子总结
- 剑指MBA?Acer发布全高清触控Win8平板Aspire S7
- 计算机技术和信息技术结合,浅谈通信技术与计算机技术融合发展
- 2020年6月——北京大学《软件工程》笔记
- 秒懂SpringBoot之Spring对象生命周期与扩展点浅尝辄止
- 楼宇能效控制器真的有用吗
- php采购管理系统,企业采购管理系统设计与实现.doc
- ocr识别软件测试点,屏幕取词和OCR取词测试
热门文章
- springboot 使用restTemplate 发送https请求 忽略ssl证书
- 正常的vite创建项目并且安装vue router,vant的代码示例
- ajax中get请求获取数据
- 京东app html源码_哔哩哔哩源码泄露,看不懂怎么办?
- 石河子大学计算机类学什么,石河子大学有哪些专业好,2021年石河子大学各专业排名...
- 新版手机浏览器_Firefox手机浏览器app下载安装_Firefox手机浏览器软件最新版免费下载...
- 力扣每日一题 2021.10.23
- 中文信息处理——语料划分测试集与训练集
- Windows运维的学习笔记
- Tensorflow异常集锦