C语言中关于if语句中的小细节
时间:03-28 11:04 阅读:1148次
*温馨提示:点击图片可以放大观看高清大图
简介:if语句都会用,但是有一些小细节并不容易被发现。下面就来说说C语言中关于if语句中的小细节。
if语句都会用,但是有一些小细节并不容易被发现。
比如我们不应该写这样的代码:

flag为布尔变量,布尔变量的值为真或假,用0表示假,真是多少是不一样的。
所以我们应该避免将布尔变量与0或1这样的整型值进行比较。
那么我们也不应该写这样的代码:

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

还有重要的一点是,我们不能将float型和double型数据与0这种整型变量进行==或!=。
因为上面说的两种数据都是有明确的精度的,我们应该设法转化为>=或<=这种比较,列如:

将浮点数与一个定义好的精度进行比较。
那么,指针变量与零值的比较呢?我们应该写成这样:

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

这都是不好的编程习惯,第一个容易看成布尔变量,第二个容易看成整型。
有的时候我们会看到这样的代码:

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