bool btestflag = false;//
想想為什麼一般初始化為
false
比較好?
a), if(btestflag == 0); if(btestflag == 1);
b), if(btestflag == true); if(btestflag == flase);
c), if(btestflag); if(!btestflag);
哪一組或是那些組正確呢?我們來分析分析:
a)寫法:btestflag
是什麼?整型變數?如果要不是這個名字遵照了前面的命名規範,
肯怕很容易讓人誤會成整型變數。所以這種寫法不好。
b)寫法:flase
的值大家都知道,在編譯器裡被定義為0;但
true
的值呢?都是1
嗎?很不幸,不都是1。
visual c++
定義為1
,而它的同胞兄弟
visual basic
就把true 定義
為-1.
那很顯然,這種寫法也不好。
大家都知道
if 語句是靠其後面的括號裡的表示式的值來進行分支跳轉的。表示式如果
為真,則執行
if 語句後面緊跟的**;否則不執行。那顯然,本組的寫法很好,既不會引
起誤會,也不會由於
true
或flase
的不同定義值而出錯。記住:以後寫**就得這樣寫。
float型別,bool型別的比較
1 float 和 0 比較 if x 0.000001 x 0.000001 因為float是6位精度的,double是10位,long double 也是10位 這也是一些大眾的答案,但是還是有些疑問,沒辦法,我菜.苦於沒找到相關的說明.做了下面的例子,沒找到對應的結果,猜測一下,或者是比較中有...
c 的bool型別與c 的bool型別
本來有點懶,不過還是記一下。使用hpsocket專案碰到c 呼叫結果不符合預期,也提了這個問題。最終發現是c 中的bool型別為1 byte,而c 中採用4 bytes導致,需要在dllimport時,使用 dllimport hpsocket dll path,charset charset.an...
C 各型別與0比較的問題
在我們日常程式設計中,經常可以遇到各種型別與0比較的情況,很多情況下我們運用的都不是那麼恰當,比如說float a 與0比較的時候,有一部分程式設計師 包括我 會直接寫if 0.0 a 這樣寫一般情況下不會出下什麼太大的問題,不過還是很有隱患的。下面我們來總結一下各種型別與0值比較的情況,希望大家以...