Machine-translated by Google. Questions are authored in English.
Top

Discussion

What is the output of this C code?    

int main()
    {
        int i = 1;
        if (i++ && (i == 1))
            printf("Yes\n");
        else
            printf("No\n");
    }

 

  • A.Yes
  • B.No
  • C.Depends on the compiler
  • D.Depends on the standard

Answer: B

Correct answer: No

i++ yields the old value 1, which is true, so the right operand is evaluated - but by then the side effect has happened and i is 2. i == 1 is therefore false, the whole condition is false, and the program prints No. The && is a sequence point, so the increment is guaranteed complete before the comparison.

No comment is present. Be the first to comment.
Loading…

Post your comment

Please log in or register to post a comment.