if語句都會用,但是有一些小細節並不容易被發現。
比如我們不應該寫這樣的代碼:
if(flag==0)
flag爲布爾變量,布爾變量的值爲真或假,用0表示假,真是多少是不一樣的。
所以我們應該避免將布爾變量與0或1這樣的整型值進行比較。
那麼我們也不應該寫這樣的代碼:
if(i)
i爲一個整型變量,但是寫成上面那樣就會被人誤以爲是布爾值,良好的編程習慣是這樣的:
if(i==0)或if(i!=0)
還有重要的一點是,我們不能將float型和double型數據與0這種整型變量進行==或!=。
因爲上面說的兩種數據都是有明確的精度的,我們應該設法轉化爲>=或<=這種比較,列如:
#define EPSINON 0.000000001 if((f<=ESPINON)&&(f>=-ESPINON))
將浮點數與一個定義好的精度進行比較。
那麼,指針變量與零值的比較呢?我們應該寫成這樣:
if(p==NULL)
讓指針變量與NULL進行比較,雖然在數值上NULL與0是一樣的,但是他們的意義是完全不同的。
而且假如寫成這樣:
if(p) if(p==0)
這都是不好的編程習慣,第一個容易看成布爾變量,第二個容易看成整型。
有的時候我們會看到這樣的代碼:
if(0==i)
這是程序員故意寫成這樣的,這樣寫的目的是防止寫成if(i=0)這樣的錯誤代碼。而且寫成這樣我們的編譯器並不會報錯,但是我們寫成if(0=i)那麼編譯器就會告訴我們這樣不能賦值,我們就不會犯上面所說的錯誤了,這也是一種良好的編程習慣。