短路求值是C++标准强制规定的行为:&&左侧为false时跳过右侧,||左侧为true时跳过右侧;用于避免空指针解引用等错误,但会使右侧副作用不执行。

短路求值(Short-circuit Evaluation)是指 C++ 中逻辑与 && 和逻辑或 || 运算符在确定整体结果后,**不再计算右侧操作数**的行为。这不是优化技巧,而是语言标准强制规定的求值顺序和行为,直接影响程序正确性与性能。
短路规则:什么时候不执行右边?
&&:左边为 false 时,整个表达式必为 false,跳过右边;
||:左边为 true 时,整个表达式必为 true,跳过右边。
例如:
int* p = nullptr;
if (p != nullptr && p->value > 0) { ... } // 安全:p 为空时不会解引用
if (p->value > 0 && p != nullptr) { ... } // 危险:先解引用空指针,未定义行为!登录后复制
效率陷阱:副作用被跳过,可能出乎意料
如果右侧表达式有副作用(如函数调用、自增、IO),短路会导致这些副作用**完全不发生**——这常被误认为“bug”,实则是符合标准的预期行为。
立即学习“C++免费学习笔记(深入)”;
标签: c++
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。
还木有评论哦,快来抢沙发吧~