时间:2021-05-20
本文实例讲述了C++短路求值(逻辑与、逻辑或),分享给大家供大家参考。具体方法分析如下:
1、逻辑或的短路
首先看如下代码:
#include <iostream>using namespace std;int main(){ int a = 1; cout << "a = " << a <<endl; true || (a=0); cout << "a = " << a <<endl;}运行结果如下:
a = 1a = 1逻辑或的表现形式如下:
expression1 || exexpression2
这里用到了逻辑或,由于逻辑或的短路,expression1为true,则后面的expression2(即:(a=0) )不再求值,整个表达式的结果为true,所以a的值仍为1,没有改变。
2、逻辑与的短路
首先看如下代码:
#include <iostream>using namespace std;int main(){ int a = 1; cout << "a = " << a <<endl; false && (a=3); cout << "a = " << a <<endl;}运行结果如下:
a=1a=1逻辑与的表现形式如下:
expression1 && exexpression2
上述代码中用到了逻辑与,由于逻辑与的短路,expression1为false,则后面的expression2不再求值,整个的结果为false,所以a的值没有改变。
3、应用举例
这里以CSDN上的一个帖子为例(http://topic.csdn.net/u/20121011/10/c7e0a805-b4e2-44db-9d71-455f5f851240.html ):
不用if语句,不用汇编,怎么使得两数之积总是小于等于255?
大家看过帖子会发现有很多方法,比如最简单的条件表达式:
result = ((a*b) > 255) ? 255 : a*b;这个是最先被人提出的,但好像楼主不认同,那就试下以下两种方式:
用逻辑或的短路:
bool tmp = ((result = a*b) < 255) || (result=255);用逻辑与的短路:
bool tmp = ((result = a*b) >= 255) && (result=255);完整代码如下:
#include <iostream>using namespace std;int main(){ int a,b,result; while (true) { cin>>a>>b;// result = ((a*b) > 255) ? 255 : a*b;// bool tmp = ((result = a*b) < 255) || (result=255); bool tmp = ((result = a*b) >= 255) && (result=255); cout<<result<<endl; }}运行效果如下:
希望本文所述对大家的C++程序设计有所帮助。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例分析了JS逻辑运算符短路操作。分享给大家供大家参考,具体如下:js逻辑运算符有三个:逻辑非!、逻辑与&&、逻辑或||。所谓短路操作就是,当&&的第一个操
复制代码代码如下:publicclassTest{publicstaticvoidmain(String[]args){//逻辑运算符执行的是短路求值,当左边操
C++中运算符&和&&、|和||的详解及区别简介:&&是逻辑与运算符,||是逻辑或运算符,都是逻辑运算符,两边只能是bool类型&与|既可以进行逻辑运算,又可以
1、说明逻辑操作符执行短路求值。所谓短路,就是当一个参与运算的操作数足以推断该表达式的值时,另一个操作数(可能是表达式)就不会执行。在使用逻辑操作符时,当两个操
1、逻辑运算符(部分)符号名称&&短路与运算符||短路或运算符&与运算符|或运算符对于理工科学习者来说,逻辑运算是较为基础的概念,通常会在大一的离散数学课程中有