2013-04-22 100 views
2

我有時會看到這樣一個C程序(我使用的是C18編譯器):C如何處理if語句中的非布爾值?

unsigned char someValue = getSomeDataFromSomewhere(); 
if (someValue) { 
    doStuff(); 
} else { 
    doOtherStuff(); 
} 

我知道當你給一個if環(在C18編譯器unsigned)一個布爾值會發生什麼,但會發生什麼當你把一個非布爾值?

我的猜測是:doStuff()的值不爲零,doOtherStuff()的值爲零。但我不知道這一點,所以我想獲得一些參考。

回答

5

你的猜測是正確的:

從§6.8.4.1的WG14/N1256

在執行第一子語句如果表達式相比較不等於0

7

簡單地說 - 如果它不是零,那是真的。如果它是零,那就是錯誤的。