0
点赞
收藏
分享

微信扫一扫

逻辑操作符的短路现象

(逻辑操作符的短路现象)

1.逻辑操作符

&& 逻辑与 || 逻辑或

&&是操作符两侧表达式同时为真时,才为真;只要有一个假,结果就为假 ||是操作符两侧表达式同时为假时,才为假;只要有一个真,结果就为真 这里十分容易理解,所以不多说

2.逻辑操作符的短路

这里看几个例子就可理解:

&&的短路

int main()
{
int i = 0, a = 0, b = 2, c = 3, d = 4;
i = a++ && ++b
//i = a++||++b||d++;
printf(a = %d\nb = %d\nc = %d\nd = %d\n, a, b, c, d);
return 0;
}

这段代码输出什么? 在这里插入图片描述 解析: a++表达式的结果为0,因为逻辑与是有一个表达式为0,结果就为0,所以右边的式子不会进行运算 所以输出:a = 1,b = 2,c = 3,d = 4

这种现象叫:短路 &&操作符,左边为假,右边无需计算

现在把a的值改为1,再来看看

int main()
{
int i = 0, a = 1, b = 2, c = 3, d = 4;
i = a++ && ++b
//i = a++||++b||d++;
printf(a = %d\nb = %d\nc = %d\nd = %d\n, a, b, c, d);
return 0;
}

输出结果: 在这里插入图片描述 a++为真,继续计算,++b也为真,此时a++&&++b为真,继续计算d++ 这里所有的语句都被运算了

||的短路

int main()
{
int i = 0, a = 1, b = 2, c = 3, d = 4;
i = a++||++b||d++;
printf(a = %d\nb = %d\nc = %d\nd = %d\n, a, b, c, d);
return 0;
}

结果: 在这里插入图片描述 a++的值为1,因为是||操作符,有一个为1,结果就为1,后面式子等于多少都无所谓,所以右边的式子不会计算

**对于||操作符,左边为1,右边的式子不进行计算。这也叫短路

int main()
{
int i = 0, a = 0, b = 2, c = 3, d = 4;
i = a++||++b||d++;
printf(a = %d\nb = %d\nc = %d\nd = %d\n, a, b, c, d);
return 0;
}

在这里插入图片描述 a++值为0,继续计算,++b为3,所以a++||++b为真,所以后面的d++不进行计算

3.总结

  • &&的短路:左边为假,右边无需计算
  • ||的短路:左边为真,右边无需计算
  • 这些点十分容易理解,但是也容易被忽略,所以要细心读完此文
举报

相关推荐

操作符

0 条评论