各種資料型別與零值比較規範

2022-09-06 14:45:13 字數 1431 閱讀 6026

1、布林變數與零值比較

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

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

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

if (flag)    // 表示flag為真

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

其他為不良寫法。

2、 整型變數與零值比較

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

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

if (value == 0)  

if(value != 0)

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

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

if (!value)

3 、浮點變數與零值比較

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

具體的說,實數由乙個整數或定點數(即尾數)乘以某個基數(計算機中通常是2)的整數次冪得到,這種表示方法類似於基數為10的科學記數法。所以浮點數在運算過程中通常伴隨著因為無法精確表示而進行的近似或捨入。用"=="來比較兩個double應該相等型別,返回真值完全是不確定的。計算機對浮點數的進行計算的原理是只保證必要精度內正確即可。

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

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

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

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

其中epsinon是允許的誤差(即精度)。 const float epsinon = 0.000001,至於為什麼取0.000001,可以自己按實際情況定義。

4 、指標變數與零值比較

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

指標變數的零值是「空」(記為null)。儘管null的值與0相同,但是兩者意義不同。假設指標變數的名 字為p,它與零值比較的標準if語句如下:

if (p ==null)    // p與null顯式比較,強調p是指標變數

if (p != null)

各種資料型別與零值比較

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

各種資料型別和0比較

不可將布林變數直接與true false或者1 0進行比較。假設布林變數名字為flag,它與零值比較的標 準if語句如下 if flag 表示flag為真 if flag 表示flag為假 其他為不良寫法。應當將整型變數用 或 直接與0比較。假設整型變數的名字為value,它與零值比較的標準if語句...

各種資料型別OuO

char 1 個位元組 128 到 127 或者 0 到 255 unsigned char 1 個位元組 0 到 255 signed char 1 個位元組 128 到 127 int4 個位元組 2147483648 到 2147483647 unsigned int 4 個位元組 0 到 4...