bool型別變數與0比較的if語句應該怎樣書寫

2021-06-21 06:51:36 字數 752 閱讀 8914

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值比較的情況,希望大家以...