bool,int,float和指针变量与“零值”的比较

2025-11-24 15:13:43

1、假设布尔变量名字为flag,它与零值比较的标准if语句如下: if   (flag) //   表示flag为真 if   (!flag) //   表示flag为假 其它的用法都属于不良风格,例如: if   (flag   ==   TRUE) if   (flag   ==   1   ) if   (flag   ==   FALSE)       if   (flag   ==   0) 

bool,int,float和指针变量与“零值”的比较

2、假设整型变量的名字为value,它与零值比较的标准if语句如下: if   (value   ==   0)       if   (value   !=   0) 不可模仿布尔变量的风格而写成 if   (value) //   会让人误解   value是布尔变量 if   (!value)    

bool,int,float和指针变量与“零值”的比较

3、假设浮点变量的名字为x,应当将 if   (x   ==   0.0)   //   隐含错误的比较 转化为    if   ((x> =-EPSINON)   &&   (x <=EPSINON)) 其中EPSINON是允许的误差(即精度)

bool,int,float和指针变量与“零值”的比较

4、指针变量的零值是“空”(记为NULL)。尽管NULL的值与0相同,但是两者意义不同。假设指针变量的名字为p,它与零值比较的标准if语句如下: if   (p   ==   NULL) //   p与NULL显式比较,强调p是指针变量 if   (p   !=   NULL) 不要写成 if   (p   ==   0)   //   容易让人误解p是整型变量 if   (p   !=   0)             或者 if   (p) //   容易让人误解p是布尔变量 if   (!p) 

bool,int,float和指针变量与“零值”的比较

5、有时候我们可能会看到   if   (NULL   ==   p)   这样古怪的格式。不是程序写错了,是程序员为了防止将   if   (p   ==   NULL)   误写成   if   (p   =   NULL),而有意把p和NULL颠倒。编译器认为   if   (p   =   NULL)   是合法的,但是会指出   if   (NULL   =   p)是错误的,因为NULL不能被赋值。 

bool,int,float和指针变量与“零值”的比较

6、程序中有时会遇到if/else/return的组合,应该将如下不良风格的程序 if   (condition) return   x; return   y; 改写为 if   (condition) { return   x; } else { return   y; } 或者改写成更加简练的    return   (condition   ?   x   :   y);

bool,int,float和指针变量与“零值”的比较

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢