分号 ; 在C语言中的作用是作为一条语句结束的标识,在C程序中如果不小心多写了一个分号可能不会造成什么不良后果,这个分号也许会被视作一个不会产生任何实际效果的空语句。
但是如果在 if 或者 while 语句后面紧跟一条语句时,如果此时在 if 或者 while 语句之后多加了一个分号的话,将会产生意想不到的后果,例如:
if(a>b);
a=b;
该程序作者的意图本来是当 a 大于 b 时,将 b 的值赋给 a,然而由于 if 语句后多了一个分号,后面的语句 a=b 就和 if 语句没有任何关系了,也就是在任何情况下b的值都会赋给 a,即使 a。由此可见当程序中出现多余的分号时,会隐藏不易被发现的错误。与此同时当程序中遗漏一个分号时,同样会招致麻烦,请看下面的示例:
if(a<3)
return a
-b>0?func1():fun2();
编程者本意打算通过条件判断返回变量 a 的值,单此处 return 后面遗漏了一个分号,结果就有点儿不好说了(这段代码还有一个 悬挂式条件 写法的问题,下面会描述)。
对于这个问题怎么解决?一位资深的编程者说,每个编程人员在编码的时候都会有一种抑扬顿挫的表达节奏,练成这种感觉以后,代码中出现以上这种异常的分号,会显得特别碍眼,那大家好好感受下这种节奏吧。