4.1 运算符的优先级
规则:如果代码行中的运算符比较多,可用括号确定操作顺序。if((a|b)&&(a&c))
4.2 复合表达式
规则:不要编写太复杂的复合表达式
规则:不要有多用途的复合表达式 d = (a = b + c) + r ; 不可取。
规则:不要把程序中的复合表达式与真正的数学表达式相混淆
4.3 if语句
本节以“与零值比较”为例,展开分析。
1)布尔变量与零值比较
规则:不可将布尔变量直接与TRUR、FALSE、或者1 、 0 进行比较。
if(flag) //表示flag 为真
if(!flag) //表示flag为假
2)整型变量与零值比较
规则:用== 和 !=直接与0 比较。
if (value == 0)
if (value != 0)
3) 浮点变量与零值比较
规则:不可将浮点变量用 == 或 != 与任何数进行比较。而要注意浮点型变量都是有精度的。应该设法转化为 >= 或者 <=
将 if (x == 0.0)改为 if ((x>=-eps) && (x<=eps))
4)指针变量与零值比较
规则:应该将指针变量用 == !=与NULL进行比较。
指针变量的零值为 空 。尽管NULL的值与0相同,但两者意义不同。
if(p == NULL) 或者 if (p != NULL)
5)补充说明
有些程序中这样写 if (NULL == P) 这是为了防止用户这么写if (p = NULL)
程序中有时会遇到if/else/return的组合,应该将如下不良风格的程序
if (condition) return x;return y;
改写为
if (condition)
{ return x;}
else { return y; } 或者改写成更加简练的 return (condition ? x : y);4.4 循环语句的效率
提高循环的效率的基本办法就是降低循环体的复杂性。
规则:当有循环的嵌套时候,建议把最长的循环放在内层。
规则:如果循环体内存在逻辑判断,且循环次数很大,建议将逻辑判断放至外层。
4.5 for 语句的循环控制变量
规则:采用半开半闭区间的写法
for (int x=0; x<n; x++)
4.6 switch语句
首先,switch语句是多分支语句。基本格式如下:
switch(variable)
{
case value1: ;break;
case value2: ;break;
case value3: ;break;
default: ;break;
}
规则:每个case分支后面,不要忘了加break,且最后还有default分支。