If 语句与零值比较
一、不可将布尔变量直接与TRUE、FALSE或者1、0进行比较
规范:
if (flag)
if (!flga)
不规范:
if (flag == TRUE)
if (flag == 1 )
if (flag == FALSE)
if (flag == 0)
二、整型变量与零值比较
规范:
if (value == 0)
if (value != 0)
不规范:
if (value)
if (!value)
三、浮点变量与零值比较,不可将浮点变量用“==”或“!=”与任何数字比较。
由于float 或 double 都是有精度限制,所以一定不能“==”、“!=”来比较,要转化成“>=”等。
四、指针变量与零值比较,应当将指针变量用“==”或“!=”与NULL 比较。
规范:
if (p == NULL) // p 与NULL 显式比较,强调p 是指针变量
if (p != NULL)
循环语句的效率
一、在多重循环中,如果有可能,应当将最长的循环放在最内层,最短的
循环放在最外层,以减少CPU 跨切循环层的次数。
二、如果循环体内存在逻辑判断,并且循环次数很大,宜将逻辑判断移到循环体的外面。
三、建议for 语句的循环控制变量的取值采用“半开半闭区间”写法。选择“0 =< x < N”而不是“0 =< x <= N-1”。
常量const VS #define(C)
一、在C++ 程序中只使用const 常量而不使用宏常量,即const 常量完全取代宏常量。
二、const常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查。而对后者只进行字符替换,没有类型安全检查,并且在字符替换可能会产生意料不到的错误(边际效应)。且#define定义的宏常量是全局的,用起来没有const灵活。
函数设计
一、如果参数是指针,且仅作输入用,则应在类型前加const,以防止该
指针在函数体内被意外修改。
void StringCo