1、布林變數與零值比較
不可將布林變數直接與 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)
2、整型變數與零值比較
應當將整型變數用「==」或「!=」直接與 0比較。假設整型變數的名字為 value,它與零值比較的標準 if 語句如下:
if (value == 0)
if (value != 0)
不可模仿布林變數的風格而寫成
if (value)
// 會讓人誤解 value 是布林變數
if (!value)
3、浮點變數與零值比較
不可將浮點變數用「==」或「!=」與任何數字比較。千萬要留意,無論是 float 還是 double 型別的變數,都有精度限制。所以一定要避免將浮點變數用「==」或「!=」與數字比較,應該設法轉化成「>=」或「<=」形式。
假設浮點變數的名字為 x,應當將 if (x == 0.0) // 隱含錯誤的比較 轉化為
if ((x>=-eps) && (x<=eps))
其中 eps是允許的誤差(即精度)
4、指標變數與零值比較
應當將指標變數用「==」或「!=」與 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)
變數與零值比較
l 不可將布林變數直接與true false或者1 0進行比較。根據布林型別的語義,零值為 假 記為false 任何非零值都是 真 記為true true的值究竟是什麼並沒有統一的標準。例如visual c 將true定義為1,而visual basic則將true定義為 1。假設布林變數名字為fl...
js中 與 以及不同型別的值的比較
1 對於string,number等基礎型別,和 是有區別的 a 不同型別間比較,之比較 轉化成同一型別後的值 看 值 是否相等,如果型別不同,其結果就是不等 b 同型別比較,直接進行 值 比較,兩者結果一樣 2 對於array,object等引用型別,和 是沒有區別的 進行 指標位址 比較 3 基...
各變數與零值比較!!!
一 bool變數與零值比較。bool型別的定義中,零值為假 false 任何非零值都為真!所以不可將bool變數直接與true,false,0,或者1來比較!比如 char flag a if flag printf true n else if flag printf false n 二 整型變數...