美丽的短路原则

    刚看到一帖子,说是短路原则,自己写了段代码试了下。果然很好玩!

int main()

{

    int a,b;

    a = 2;

    b = 3;

    !a&&(b++);

    cout<<b;

/*

    a&&(b++);

    cout<<b;

*/

    return 0;

}

    其中,未被标的,输出为3。被标的代码,输出为4。原因是&&运算符从左往右算(在VC6.0本地编译器下),如果判断&&的左边已经为0,刚不执行右边代码。||也同理。

    很有趣,很好玩。

### 关于逻辑运算符 || 的短路行为 在编程中,`||` 运算符被称为短路逻辑或运算符 (short-circuit logical OR operator)。当使用该运算符时,如果第一个操作数的布尔值为 `true`,则整个表达式的值已经被确定为 `true`,因此不会对第二个操作数进行求值[^5]。 这种特性可以显著提高程序效率并减少不必要的计算开销。例如,在某些情况下,第二部分的操作可能涉及昂贵的函数调用或者可能导致副作用(side effects)。通过利用短路机制,可以在满足条件的情况下跳过这些潜在的风险或性能瓶颈。 #### 示例代码展示 以下是关于如何应用 `||` 短路特性的简单例子: ```cpp #include <iostream> using namespace std; bool checkConditionA() { cout << "Checking Condition A..." << endl; return true; // 假设此条件始终成立 } bool checkConditionB() { cout << "Checking Condition B..." << endl; return false; // 此处实际上永远不会被执行 } int main(){ if(checkConditionA() || checkConditionB()){ cout << "At least one condition is TRUE." << endl; } } ``` 在这个例子中,由于 `checkConditionA()` 返回的是 `true`,所以即使存在另一个更复杂的判断语句 `checkConditionB()` ,它也不会被实际执行。这不仅简化了调试过程还优化了运行时间。 ### 总结 综上所述,`||` 运算符遵循一种称为“短路”的评估策略:一旦能够决定最终结果就立即停止进一步测试其余子表达式[^6]。这一特点使得开发者能够在设计算法时更加灵活高效地处理各种场景下的控制流问题。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值