if语句都会用,但是有一些小细节并不容易被发现。

比如我们不应该写这样的代码:

if(flag==0)

flag为布尔变量,布尔变量的值为真或假,用0表示假,真是多少是不一样的。

所以我们应该避免将布尔变量与0或1这样的整型值进行比较。


那么我们也不应该写这样的代码:

if(i)

i为一个整型变量,但是写成上面那样就会被人误以为是布尔值,良好的编程习惯是这样的:

if(i==0)或if(i!=0)


还有重要的一点是,我们不能将float型和double型数据与0这种整型变量进行==或!=。

因为上面说的两种数据都是有明确的精度的,我们应该设法转化为>=或<=这种比较,列如:

#define EPSINON 0.000000001
if((f<=ESPINON)&&(f>=-ESPINON))

将浮点数与一个定义好的精度进行比较。


那么,指针变量与零值的比较呢?我们应该写成这样:

if(p==NULL)

让指针变量与NULL进行比较,虽然在数值上NULL与0是一样的,但是他们的意义是完全不同的。

而且假如写成这样:

if(p)
if(p==0)

这都是不好的编程习惯,第一个容易看成布尔变量,第二个容易看成整型。


有的时候我们会看到这样的代码:

if(0==i)

这是程序员故意写成这样的,这样写的目的是防止写成if(i=0)这样的错误代码。而且写成这样我们的编译器并不会报错,但是我们写成if(0=i)那么编译器就会告诉我们这样不能赋值,我们就不会犯上面所说的错误了,这也是一种良好的编程习惯。