关于if语句中的小细节

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于if语句中的小细节相关的知识,希望对你有一定的参考价值。

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




以上是关于关于if语句中的小细节的主要内容,如果未能解决你的问题,请参考以下文章

SQL Select 语句的用法

关于a标签不能调用js方法的小细节,你注意到了么?

PHP中的流程控制

mysqldump命令的小细节

在 JSP 中的 <% %> 代码片段中添加链接

关于java中的if语句