A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© goobag 中级黑马   /  2014-4-29 20:22  /  2195 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

关于特殊变量与零值作比较,查了下书,整理了一下,很有用。


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),这个表达式编译器当然会认为是正确的,但却不是你要表达的意思。所以,非常推荐这种写法。

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

4 个回复

倒序浏览
占个沙发慢慢学。
回复 使用道具 举报
拎个板凳坐着看
回复 使用道具 举报
写的不错 加油~~~
回复 使用道具 举报
写个日记不错!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马