我有时会在C程序中看到这个(我正在使用C18编译器):
unsigned char someValue = getSomeDataFromSomewhere();
if (someValue) {
doStuff();
} else {
doOtherStuff();
}
我知道当你给if
循环一个布尔值(C18编译器中的unsigned
)时会发生什么,但是当你把非布尔值放入时会发生什么?
我猜:当值不为零时它会doStuff()
,而当值为零时会doOtherStuff()
。但我不知道这个,所以我想得到一些参考。
答案 0 :(得分:7)
简单地说 - 如果它不为零,那就是真的。如果它为零,则为假。
答案 1 :(得分:5)
你的猜测是正确的:
来自WG14 / N1256的第6.8.4.1节
如果表达式比较不等于0
,则执行第一个子语句