c if語句比較注意

2021-05-14 16:39:25 字數 1362 閱讀 9153

4.3.1 布林變數與零值比較

z 【規則4-3-1】不可將布林變數直接與true、false 或者1、0 進行比較。

根據布林型別的語義,零值為「假」(記為false),任何非零值都是「真」(記為

true)。true 的值究竟是什麼並沒有統一的標準。例如visual c++ 將true 定義為

1,而visual basic 則將true 定義為-1。

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

if (flag) // 表示flag 為真

高質量c++/c 程式設計指南,v 1.0

2001 page 28 of 101

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

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

if (flag == true)

if (flag == 1 )

if (flag == false)

if (flag == 0)

4.3.2 整型變數與零值比較

z 【規則4-3-2】應當將整型變數用「==」或「!=」直接與0 比較。

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

if (value == 0)

if (value != 0)

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

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

if (!value)

4.3.3 浮點變數與零值比較

z 【規則4-3-3】不可將浮點變數用「==」或「!=」與任何數字比較。

千萬要留意,無論是float 還是double 型別的變數,都有精度限制。所以一定要

避免將浮點變數用「==」或「!=」與數字比較,應該設法轉化成「>=」或「<=」形式。

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

if (x == 0.0) // 隱含錯誤的比較

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

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

4.3.4 指標變數與零值比較

z 【規則4-3-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)

c if語句比較注意

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

C if語句 使用if語句

c 的if語句是用來判定所給的條件是否滿足,並根據判斷的結果true或false決定執行哪一步。單個if語句 如 if x y if 表示式 語句1 else 語句2 如 if x y else if 表示式1 語句1 else if 表示式2 語句2 else if 表示式3 語句3 else i...

c if語句講解 例題

if 條件 布林型 2.例子 include using namespace std intmain 輸出 a大於10 描述 輸入乙個數a 如果a是奇數,輸出 jishu 如果a是偶數,輸出 oushu include using namespace std intmain if a 2 0 if ...