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

Discussion

What is the output of this C code?

void main()
    {
        int x = 1, y = 0, z = 5;
        int a = x && y && z++;
        printf("%d", z);
    }

 

  • A.6
  • B.5
  • C.Varies

Answer: B

Correct answer: 5

x && y is false, and once the left operand of && is false the result is settled, so the right operand is never evaluated. z++ does not run and z stays 5. This is short-circuiting, and it is guaranteed by the standard rather than being a compiler optimisation.

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

Post your comment

Please log in or register to post a comment.