关于if语句中的小细节

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

好比咱们不该该写这样的代码:编程

if(flag==0)

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

因此咱们应该避免将布尔变量与0或1这样的整型值进行比较。指针


那么咱们也不该该写这样的代码:编译器

if(i)

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

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


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

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

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

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


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

if(p==NULL)

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

并且假如写成这样:

if(p)
if(p==0)

这都是很差的编程习惯,第一个容易当作布尔变量,第二个容易当作整型。


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

if(0==i)

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

相关文章
相关标签/搜索