2013-04-22 46 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

简单地说 - 如果它不是零,那是真的。如果它是零,那就是错误的。