c - 递增运算符在 if 语句中如何工作?

标签 c if-statement post-increment

    #include <stdio.h>

    int main()
    {
        int x = 0;

        if (x++)
            printf("true\n");
        else if (x == 1)
            printf("false\n");
        return 0;
    }

输出:

false

为什么输出是假的?

x++ 是后增量;这意味着 x 的值被使用,然后递增。 如果是这样,则应使用 x=0 并且答案应该为真。

最佳答案

在 C 中,0 被视为 false。在x++中,表达式中使用了x的值,即0,变成了

if(0)  // It is false
    printf("true\n");  

if 的主体没有被执行。之后 x 现在是 1。现在检查 else if 中的条件,即 x == 1。因为 x1 ,这个条件评估为 true 因此它的主体被执行并打印 “false”

关于c - 递增运算符在 if 语句中如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21435072/

相关文章:

c++ - 未使用的实体问题 "Expression result unused"XCode 4 (Clang LLVM)

c# - 避免在 switch 语句中进行硬编码

c++ - 嵌套在 for 语句中的 if 语句将不起作用

php - 递增时的字符串连接

php - 如何使用 ./configure 设置变量

c - puts 是可重入的吗?

programming-languages - 语言是否需要 preIncrement (++x) 和 postIncrement (x++)

swift -++ 后增量运算符的替代方案?

c - 将取消引用的指针的地址传递给字符串偏移量

css - 如何在嵌套 sass 映射 (SCSS) 中执行 'if' 语句?