C如何处理if语句中的非布尔值?

时间:2013-04-22 15:51:18

标签: c if-statement types pic c18

我有时会在C程序中看到这个(我正在使用C18编译器):

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

我知道当你给if循环一个布尔值(C18编译器中的unsigned)时会发生什么,但是当你把非布尔值放入时会发生什么?

我猜:当值不为零时它会doStuff(),而当值为零时会doOtherStuff()。但我不知道这个,所以我想得到一些参考。

2 个答案:

答案 0 :(得分:7)

简单地说 - 如果它不为零,那就是真的。如果它为零,则为假。

答案 1 :(得分:5)

你的猜测是正确的:

来自WG14 / N1256的第6.8.4.1节

  

如果表达式比较不等于0

,则执行第一个子语句