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

时间: 2024-10-27 03:27:08

关于if语句中的小细节的相关文章

注意编码工作中的小细节

人们常说"细节决定成败". 编码工作中,同样需要关注细节. 本文将给出3个小实例来说明编码中关注细节的重要性,同时给出作者对如何注意编码细节的一点见解(说的不对,请指正). 例1 这个问题如此地显而易见,竟然没有被发现. List<int> numList = new List<int>(); numList.Add(3); numList.Add(1); numList.Add(4); numList.Add(2); numList.Add(5); numLi

Java中的小细节

1.访问权限 1.private 只有本类才能被访问 2.default(默认)只有本包中才能被访问 3.protected只有子类和本包才能被访问,可以跨包. 4.public 可以在所有类中被访问 2.Java命名规范 1.类.所有单词首字母大写 2.方法.第一个单词的首字母小写 3.属性.第一个单词的首字母小写 4.包名.所有单词小写 5.常量.所有单词的字母大写.final定义的 Java中的小细节,码迷,mamicode.com

关于 JavaScript 中一个小细节问题 (在控制台中直接 {} 对象报错问题)

在 Chrome 浏览器,大家可能遇到这样一个小问题. 随便输入一个 Object 对象  ,比如 {Name:'王尼玛',Age:20} ,将会报错.之前,也从来没去考虑过到底是为啥原因. 今天,刚好看到博客园有博友文章,顺便记录一下. 在 JavaScript 中, : 有三种作用,想必大家都知道,其一  三元表达式  true? A:B,其二 在 switch case 中 case 语句中会用到,其三 就是上图中,对象直接量表达式中. 其实 ,在 JS 中,: 还有一种用法,如下所示,内

装修中的小细节和冷知识

一般在装修完以后都会都会发现很多小毛病和不足之处,这是因为什么呢,就是因为很多小细节没有注意到,可别小看这些小细节有时候却能起到很大的作用,那下面我给大家说一些在装修中的冷知识,看完记得收藏. 1.玄关的收纳很重要,全家人的鞋子加在一起数量多,需要大的鞋柜才能装得下,我们可以利用墙面空间全部打上柜子,这样收纳空间要比买的多,也更加实用. 2.客厅插座要留足,电视墙要留足五个插座,3孔和2孔插座都要有,沙发墙可以做两个usb插座,方便给手机充电,要是留少了就会发现日后要接拖线板,危险不说更大大的影

不要忽视Web编程中的小细节

概述:长时间以来,我们创造了某些在构造和范围内用以提升网站易用性的约定和实践.然后在我们进行web编程的时候总有一些疏忽和纰漏.这里总结了一些web编程时容易出现的小错误,并给出了相应的补救方法,希望可以帮助提高网站的可用性.只要避免下列这些错误,网站的用户体验度就会大大提升. 错误一: 表单标签没有与相应字段相关联 利用 "for" 属性,使客户可以通过点击标签在表格内选择正确的输入字段.这对于复选框和单选字段来说就是要有更大的可点击区域. 错误二: Logo图表没有链接到主页 给l

apache配置中的小细节

configuration error: couldn’t perform authentication错误的解决办法 configuration error: couldn’t perform authentication. AuthType not set!: / apache 2.4中支持的 granted语法在低版本中不能使用 需要把下面的语句注释掉: # Require all granted 保存 重启apache 即可! .htaccess: Invalid command 'Re

i++和++i的区别及在for()循环语句中的应用细节

#include<stdio.h> #include<stdlib.h> int main() { int a = 5, b; b = a++; //我们可以这样理解该语句执行细节:步骤1.b=a; 步骤2.a=a+1; printf("\n a = 5 ,b未赋值,若 b = a++, 则有:b = %d,a = %d \n\n", b, a); int c = 5, d; d = ++c; //我们可以这样理解该语句执行细节:步骤1.c=c+1; 步骤2.d

Python正则表达式使用过程中的小细节

今天用Python写了个简单的爬虫程序,抓取虎扑篮球(nba.hupu.com)的首页内容,代码如下: 1 #coding:gb2312 2 import urllib2, re 3 webpage = urllib2.urlopen('http://nba.hupu.com') 4 text = webpage.read() 5 m = re.search('<a href=(.*) (.*)?>彩票</a>', text) 6 print m.group(1) 按照预想应该输出

C++11中的小细节--字符串的原始字面量

原始字面量很容易理解,即不进行转义的完整字符串. 最近看了看Python,其中讲到了原始字符串. Both string and bytes literals may optionally be prefixed with a letter ‘r’ or ‘R’; such strings are called raw strings and treat backslashes as literal characters. As a result, in string literals, ‘\U