Evaluation of the following expression

后端 未结 3 1405
别跟我提以往
别跟我提以往 2021-01-26 03:25

The following code snippet:

int i=-3,j=2,k=0,m;

m=++i && ++j || ++k;

can be evaluated using two concepts,I believe:

1.Since ++

3条回答
  •  野的像风
    2021-01-26 04:14

    In attempting to be efficient, evaluation of an OR statement (executed from left to right) stops when the LHS is true. There is no need to start evaluating the RHS - there is no concept of "precedence" except within the same group of an expression (when it matters to the value of the expression whether you first do A or B. Example: 5 + 3 * 2 should evaluate to 11. But in evaluating ( 5 + 6 > 3 * 2) it doesn't matter whether you do the addition before the multiplication - it doesn't change the result of the comparison. And in practice this gets evaluated left-to-right. Thus you get the result you observed.

    See also this earlier answer

提交回复
热议问题