2

我有时会在 C 程序中看到这一点(我使用的是 C18 编译器):

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

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

我的猜测:doStuff()当值不为零并且值为零时,它会发生doOtherStuff()。但是我不知道这个,所以我想得到一些参考。

4

2 回答 2

7

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

于 2013-04-22T15:52:25.027 回答
5

你的猜测是正确的:

来自 WG14/N1256 的§6.8.4.1

如果表达式比较不等于 0,则执行第一个子语句

于 2013-04-22T15:57:41.293 回答