關於if語句中的小細節

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)那麼編譯器就會告訴咱們這樣不能賦值,咱們就不會犯上面所說的錯誤了,這也是一種良好的編程習慣。

相關文章
相關標籤/搜索