如果第一个表达式为假,逻辑和运算符将不会计算第二个表达式,这总是正确的吗?

时间:2013-04-04 02:43:13

标签: c++ logical-operators

int* ptr;
//ptr may points to any location(e.g. nullptr)
if(ptr != nullptr && *ptr != 1) {
  //A
} else {
  //B
}

以上代码总是等同于以下代码吗?

if(ptr != nullptr) {
  if(*ptr != 1) {
    //A
  } else {
    //B
  }
} else {
  //B
}

我想知道这条规则是标准的还是实现定义的,并且是第一段可移植的代码?

0 个答案:

没有答案