如果条件在C++中执行顺序

Jad*_*den 2 c++ if-statement execute

我在C++中有一个if块,如下所示:

if( node != NULL && node->next !=NULL ){
    //do some stuff
}
Run Code Online (Sandbox Code Playgroud)

任何人都可以告诉我,我需要拆分节点和节点 - >下两个if块吗?或者是否保证node!= NULL将在node-> next!= NULL之前执行?

Rah*_*thi 13

这是一个短路评估,运算符&&保证在评估右侧之前将完全评估左侧表达式

从标准:

5.14逻辑AND运算符[expr.log.and]

logical-and-expression: 
      inclusive-or-expression
      logical-and-expression && inclusive-or-expression 
Run Code Online (Sandbox Code Playgroud)
  1. &&运算符从左到右分组.操作数都在上下文中转换为bool(第4条).如果两个操作数都为真,则结果为true,否则为false.与&不同,&&保证从左到右的评估:如果第一个操作数为假,则不评估第二个操作数.
  2. 结果是布尔.如果评估第二表达式,则在与第二表达式相关联的每个值计算和副作用之前,对与第一表达式相关联的每个值计算和副作用进行排序.