不同型別變數與零值比較

2021-06-20 20:14:13 字數 1392 閱讀 5192

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 二 整型變數...