可编辑可修改
C语言书写规范指南
第 1 章文件结构
每个 C程序通常分为两个文件。一个文件用于保存程序的声明( decla右
*
/
%
+
-
从左至右
4
可编辑可修改
<<
>>
从左至右
<
<=
>
>=
从左至右
==
!=
从左至右
&
从左至右
^
从左至右
|
从左至右
&&
从左至右
||
从右至左
:
从右至左
=
+=
-=
*=
/= %= &= ^=
从左至右
|=
<<=
>>=
表4-1 运算符的优先级与结合律
【规则 4-1-1 】如果代码行中的运算符比较多,用括号确定表达式的操作顺序,避免使用默认
的优先级。
由于将表 4-1 熟记是比较困难的,为了防止产生歧义并提高可读性,应当用括号确定表达
式的操作顺序。例如:
word = (high<<8)|low
if ((a|b)&&(a&c))
复合表达式
如 a=b=c=0这样的表达式称为复合表达式。允许复合表达式存在的理由是:
1)书写简洁;( 2)可以提高编译效率。但要防止滥用复合表达式。
【规则 4-2-1 】不要编写太复杂的复合表达式。例如:
i=a>=b&&c<d&&c+f<=g+h;// 复合表达式过于复杂
【规则 4-2-2 】不要有多用途的复合表达式。例如:
d=(a=b+c)+r;
该表达式既求 a值又求 d值。应该拆分为两个独立的语句:
a = b + c;
d = a + r;
5
可编辑可修改
【规则 4-2-3 】不要把程序中的复合表达式与“真正的数学表达式”混淆。例如:
if(a<b<c) //a<b<c 是数学表达式而不是程序表达式并不表示
if ((a<b)&&(b<c))
而是成了令人费解的
if((a<b)<c)
语句
if 语句是 C语言中最简单、最常用的语句,然而很多程序员用隐含错误的方式
写 if 语句。本节以“与零值比较”为例,展开讨论。
布尔变量与零值比较
【规则 4-3-1 】不可将布尔变量直接与 TRUE、 FALSE或者 1、 0进行比较。
根据布尔类型的语义,零值为“假”(记为 FALSE),任何非零值都是“真”(记为
TRUE)。 TRUE的值究竟是什么并没有统一的标准。例如 VisualC++ 将TRUE定义为 1,
而 VisualBasic 则将 TRUE定义为 -1 。
假设布尔变量名字为 flag ,它与零值比较的标准 if 语句如下:
if (flag)// 表示 flag 为真
if (!flag)// 表示 flag 为假
其它的用法都属于不良风格,例如:
if(flag==TRUE)
if(flag==1)
if(flag==FALSE)
if(flag==0)
整型变量与零值比较
【规则 4-3-2 】应当将整型变量用“ ==”或“! =”直接与 0比较。假设整
6
可编辑可修改
型变量的名字为 value ,它与零值比较的标准 if 语句如下:
if(value==0)
if(value!=0)
不可模仿布尔变量的风格而写成
if(value) // 会让人误解 value 是布尔变量
if(!value)
浮点变量与零值比较
【规则 4-3-3 】不可将浮点变量用“ ==”或“! =”与任何数字比较。
千万要留意,无论是 float 还是 double 类型的变量,都有精度限制。所以一定要避免将浮点
变量用“ ==”或“! =”与数字比较,应该设法转化成“ >=”或“
C语言格式书写规范 来自淘豆网m.daumloan.com转载请标明出处.