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