Short circuit evaluation with both && || operator

别说谁变了你拦得住时间么 提交于 2019-11-27 14:52:45

The expression 5 || 2 && ++x is equivalent to 5 || (2 && ++x) due to operator precedence.

The run time evaluates the expression 5 || 2 && ++x from left to right.

As we know in OR if first condition is true it will not check the second condition.
So here 5 evaluated as true and so (2 && ++x) will not be performed.

That's why x will remain 0 here.

Correct. The expression is short circuited. You can test it with this.

if(5 || ++x) {
  printf("%d\n",x);
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!