關於if語句中的小細節

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




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章