變數與零值比較

2021-06-16 07:31:29 字數 1624 閱讀 1688

不可將布林變數直接與true、false或者1、0進行比較。

根據布林型別的語義,零值為「假」(記為false),任何非零值都是「真」(記為true)。true的值究竟是什麼並沒有統一的標準。例如visual c++ 將true定義為1,而visual basic則將true定義為-1。

假設布林變數名字為flag,它與零值比較的標準if語句如下:

if (flag) 

// 表示flag為真

if (!flag)  // 表示flag為假

其它的用法都屬於不良風格,例如:

if (flag == true) 

if (flag == 1 )  

if (flag == false)  

if (flag == 0) 

整型變數與零值比較

l  應當將整型變數用「==」或「!=」直接與0比較。

假設整型變數的名字為value,它與零值比較的標準if語句如下:

if (value == 0)  

if (value != 0)

不可模仿布林變數的風格而寫成

if (value) 

// 會讓人誤解 value是布林變數

if (!value)

浮點變數與零值比較

l 不可將浮點變數用「==」或「!=」與任何數字比較。

千萬要留意,無論是float還是double型別的變數,都有精度限制。所以一定要避免將浮點變數用「==」或「!=」與數字比較,應該設法轉化成「>=」或「<=」形式。

假設浮點變數的名字為x,應當將 

if (x == 0.0)  

// 隱含錯誤的比較

轉化為if ((x>=-epsinon) && (x<=epsinon))

其中epsinon是允許的誤差(即精度)。

指標變數與零值比較

l  應當將指標變數用「==」或「!=」與null比較。

指標變數的零值是「空」(記為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) 

對if語句的補充說明

有時候我們可能會看到 if (null == p) 這樣古怪的格式。不是程式寫錯了,是程式設計師為了防止將 if (p == null) 誤寫成 if (p = null),而有意把p和null顛倒。編譯器認為 if (p = null) 是合法的,但是會指出 if (null = p)是錯誤的,因為null不能被賦值。

程式中有時會遇到if/else/return的組合,應該將如下不良風格的程式

if (condition) 

return x;

return y;

改寫為 if (condition)

else

或者改寫成更加簡練的

return (condition ? x : y);

各變數與零值比較!!!

一 bool變數與零值比較。bool型別的定義中,零值為假 false 任何非零值都為真!所以不可將bool變數直接與true,false,0,或者1來比較!比如 char flag a if flag printf true n else if flag printf false n 二 整型變數...

各種變數與零值的比較

1 布林 bool 變數與零值比較 不可將布林變數直接與true false或者1 0進行比較。根據布林型別的定義,零值為 假 記為false 任何非零值都是 真 記為true true的值是什麼並沒有統一標準。例如,visual c 將true定義為1,而visual basic則將true定義為...

與零值比較

當通過用if 值 0 進行比較的時候 要看這個值是什麼型別的 具體如下 1.當值為 int,char型的時候 應用 if int val 0 或者 if int val 0 2.當值為指標變數的時候 應用if null p 或者if null p 注 null最好寫在左邊 因為如果在右邊的話容易寫成...