How does the increment operator work in an if statement?

c, if-statement, post-increment

Solution

In C, `0` is treated as `false`. In `x++`, the value of `x`, i.e, `0` is used in the expression and it becomes

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

The body of `if` doesn't get executed. After that `x` is now `1`. Now the condition in `else if`, i.e, `x == 1` is checked. since `x` is `1` , this condition evaluates to `true` and hence its body gets executed and prints `"false"`.

Problem

``` #include <stdio.h> int main() { int x = 0; if (x++) printf("true\n"); else if (x == 1) printf("false\n"); return 0; } ``` Output: ``` false ``` Why is the output false? `x++` is post increment; this means that the value of `x` is used then it is incremented. If it is so, then `x=0` should be used and the answer should be true.

Original source

Related problems