1. 程式人生 > >BOOL型別、int型、float型及指標變數如何與“零值”如何比較

BOOL型別、int型、float型及指標變數如何與“零值”如何比較

首先了解“零值”的含義:

題目中要求的是零值比較,而非與0進行比較,在C/C++裡“零值”的範圍很大,可i是00.0 、FAiiSE或者g空指標”leiflUagg)

BOOL flag與“零值”比較的 if 語句

根據布林型別的語義,零值為“假”(記為FALSE),任何非零值都是“真”(記為TRUE)。TRUE 的值究竟是什麼並沒有統一的標準。例如Visual C++ 將TRUE 定義為1,而Visual Basic 則將TRUE 定義為-1。所以我們不可以將布林變數直接與TRUE、FALSE 或者1、0 進行比較。

if ( flag )

if (!flag )

//如下寫法均屬不良風格

if (flag == TRUE) 

if (flag == 1 ) 

if (flag == FALSE) 

if (flag == 0)

int x 與“零值”比較的 if 語句

應當將整型變數用 “==” 或 “!=” 直接與0比較。

int a;

if(a == 0);

if(a != 0);

float x 與“零值”比較的 if 語句

千萬要留意,無論是float 還是double 型別的變數,都有精度限制,都不可以用“==”或“!=”與任何數字比較應該設法轉化成“>=”或“<=”形式。 假設浮點變數的名字為x,應當將if (x == 0.0)         // 隱含錯誤的比較轉化為if ((x>=-EPSINON) && (x<=EPSINON)) 其中EPSINON 是允許的誤差

(即精度)。

const float EPSINON = 0.00001;

if ((x >= - EPSINON) && (x <= EPSINON)

//如下是錯誤的寫法

if (x == 0.0) 

if (x != 0.0)

請寫出 char *p 與“零值”比較的 if 語句

指標變數的零值是“空”(記為NULL),應當將指標變數用 “==” 或 “!=” 與NULL比較。

if (p == NULL)

if (p != NULL)


//如下寫法均屬不良風格。

if (p == 0)        // 容易讓人誤解p是整型變數

if (p != 0) 

if (p)             // 容易讓人誤解p是bool型變數

if (!p)