逻辑表达式短路求值问题
例:
问:x=1,y=1,z=1, 执行表达式w=++x||++y&&++z 后,x、y、z的值分别为什么?
【逻辑表达式短路求值问题】答:
x=2;
y和Z的值不变;
逻辑运算++x的值为1,因此后面的语句没有执行;
参考解释:
短路求值
作为"&&"和"||"操作符的操作数表达式,这些表达式在进行求值时,只要最终的结果已经可以确定是真或假,求值过程便告终止,这称之为短路求值。这是这两个操作符的一个重要属性。假如expr1和expr2都是表达式,并且expr1的值为0,在下面这个逻辑表达式的求值过程中:
expr1 && expr2
expr2将不会进行求值,因为整个逻辑表达式的值已经可以确定为0。 类似地,如果expr1的值不是0,那么在下面的这个逻辑表达式的求值过程中:
expr1 || expr2
expr2将不会进行求值,因为整个逻辑表达式的值已经确定为1。
下面是一个简单的可能会出现短路求值的例子。假如我们需要处理的字符数量不超过5个。
int cnt =0;
while (++cnt<=5&&(c=getchar())!=EOF)
{
...
当表达式++cnt<=5的值是假时,下一个字符就不会被读取。
推荐阅读
- python学习之|python学习之 实现QQ自动发送消息
- 逻辑回归的理解与python示例
- Python爬虫|Python爬虫 --- 1.4 正则表达式(re库)
- 2020年,财富逻辑的大变迁
- 社群培训系统day6复盘—小白学习社群的底层逻辑
- 【用失败者的逻辑看世界】——读书10/100天打卡
- 智汀云盘-开发指南iOS(文件夹加密逻辑)
- Python|Python 科学计算库 NumPy 学习笔记 - 5 - 遮盖与布尔逻辑
- 正则表达式中增加变量
- sed及正则表达式