黑马程序员技术交流社区
标题:
特殊变量与零值作比较的写法
[打印本页]
作者:
goobag
时间:
2014-4-29 20:22
标题:
特殊变量与零值作比较的写法
关于特殊变量与零值作比较,查了下书,整理了一下,很有用。
1,bool 变量与“零值”进行比较
bool变量与“零值”进行比较的if语句怎么写?
bool flag = FALSE;
A), if(flag == 0); if(fFlag == 1);
B), if(flag == TRUE); if(flag == FLASE);
C), if(flag); if(!flag);
哪一组或是那些组正确呢?
A)容易让人误会成整型变量
B)FLASE的值在编译器里被定义为0;但TRUE的值呢?都是1吗?很不幸,不都是1。Visual C++定义为1,而它的同胞兄弟Visual Basic就把TRUE定义为-1.那很显然,这种写法也不好。
C)if语句靠其后面的括号里的表达式的值来进行分支跳转的。表达式如果为真,则执行if语句后面紧跟的代码;否则不执行。那显然,本组的写法很好,既不会引起误会,也不会由于TRUE或FLASE的不同定义值而出错。
2, float 变量与“零值”进行比较
float变量与“零值”进行比较的if语句怎么写?
float Val = 0.0;
A), if(Val == 0.0); if(Val != 0.0);
B), if((Val >= -EPSINON) && (Val <= EPSINON));
A)float和double类型的数据都是有精度限制的,不能直接拿来和0.0做比较。
B)EPSINON为定义好的精度,如果一个数落在[0.0-EPSINON,0.0+EPSINON] 这个闭区间内,我们认为在某个精度内它的值与零值相等;否则不相等。把0.0替换为想比较的任何一个浮点数,那就可以比较任意两个浮点数的大小了,当然是在某个精度内。
同样的也不要在很大的浮点数和很小的浮点数之间进行运算,比如:
10000000000.00 + 0.00000000001
这样计算后的结果可能会让人大吃一惊。
3,指针变量与“零值”进行比较
指针变量与“零值”进行比较的if语句怎么写?
int*p=NULL;
A), if(p == 0); if(p != 0);
B), if(p); if(!p);
C) , if(NULL == p); if(NULL != p);
A)p是整型变量?容易引起误会。尽管NULL的值和0一样,但意义不同。
B)p是bool型变量?容易引起误会。
C)写法:这个写法是正确的,但样子比较古怪。为什么要这么写呢?是怕漏写一个“=”号:if(p = NULL),这个表达式编译器当然会认为是正确的,但却不是你要表达的意思。所以,非常推荐这种写法。
作者:
执着的土豆
时间:
2014-4-29 20:27
占个沙发慢慢学。
作者:
兰闻天
时间:
2014-4-29 20:34
拎个板凳坐着看
作者:
jing迪
时间:
2014-5-3 00:43
写的不错 加油~~~
作者:
傘が咲く
时间:
2014-5-3 07:30
写个日记不错!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2