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)那么编译器就会告诉我们这样不能赋值,我们就不会犯上面所说的错误了,这也是一种良好的编程习惯。