【问题标题】:How does C handle non-booleans in an if statement?C 如何处理 if 语句中的非布尔值?
【发布时间】:2013-04-22 15:51:18
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: c if-statement types pic c18


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      你猜对了:

      来自 WG14/N1256 的 §6.8.4.1

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

      【讨论】:

        猜你喜欢
        • 2012-02-09
        • 2013-03-01
        • 1970-01-01
        • 2021-08-03
        • 2013-09-01
        • 2013-03-26
        • 2021-11-08
        • 2015-12-21
        • 2021-07-31
        相关资源
        最近更新 更多