if语句后面的分号
if語句后面的分號
關于if-else 語句還有一個容易出錯的地方就是與空語句的連用。看下面的例子: if(NULL != p) ; fun();?
這里的fun()函數并不是在NULL != p 的時候被調用,而是任何時候都會被調用。問題就出在if 語句后面的分號上。在C 語言中,分號預示著一條語句的結尾,但是并不是每條C 語言語句都需要分號作為結束標志。if 語句的后面并不需要分號,但如果你不小心寫了個分號,編譯器并不會提示出錯。因為編譯器會把這個分號解析成一條空語句。也就是上面的代碼實際等效于:?
if(NULL != p)?
{?
else?
{?
//program code
}?
}
fun();?
這是初學者很容易犯的錯誤,往往不小心多寫了個分號,導致結果與預想的相差很遠。所以建議在真正需要用空語句時寫成這樣: NULL; 而不是單用一個分號。這就好比匯編語言里面的空指令,比如ARM 指令中的NOP 指令。這樣做可以明顯的區分真正必須的空語句和不小心多寫的分號。
關于if-else 語句還有一個容易出錯的地方就是與空語句的連用。看下面的例子: if(NULL != p) ; fun();?
這里的fun()函數并不是在NULL != p 的時候被調用,而是任何時候都會被調用。問題就出在if 語句后面的分號上。在C 語言中,分號預示著一條語句的結尾,但是并不是每條C 語言語句都需要分號作為結束標志。if 語句的后面并不需要分號,但如果你不小心寫了個分號,編譯器并不會提示出錯。因為編譯器會把這個分號解析成一條空語句。也就是上面的代碼實際等效于:?
if(NULL != p)?
{?
else?
{?
//program code
}?
}
fun();?
這是初學者很容易犯的錯誤,往往不小心多寫了個分號,導致結果與預想的相差很遠。所以建議在真正需要用空語句時寫成這樣: NULL; 而不是單用一個分號。這就好比匯編語言里面的空指令,比如ARM 指令中的NOP 指令。這樣做可以明顯的區分真正必須的空語句和不小心多寫的分號。
總結
- 上一篇: 指针变量p与“零值”进行比较的if 语句
- 下一篇: case 关键字后面的的值有什么要求吗?