Logical Expressions in C misunderstanding

前端 未结 4 1474
不知归路
不知归路 2021-01-18 04:38

So, I was writing some code and I was getting an unexpected output in one part of my program which disrupted the entire system.

I managed to extract and simplify th

4条回答
  •  广开言路
    2021-01-18 05:09

    From the C Standard (6.5.14 Logical OR operator)

    3 The || operator shall yield 1 if either of its operands compare unequal to 0; otherwise, it yields 0. The result has type int.

    This expression

    ++i || ++j && k
    

    is equivalent to

    ++i || ( ++j && k )
    

    and according to the quote from the Standard the expression returns integer value 1 because ++i is not equal to zero. The subexpression ( ++j && k ) is not evaluated.

提交回复
热议问题