&和&&、|和||的区别

目录

一.踩坑

二.&和&&、|和||的区别

1.介绍

2.区别

3.总结


一.踩坑

今天在编如下代码的时候:

#include <iostream>
using namespace std;

int main() {
	int a = 1, b = 2, c = 3, d = 0;
	if (a == 1 && b++ == 2)
		if (b != 2 || c-- != 3)
			cout << a << '\t' << b << '\t' << c << endl;
		else
			cout << a << '\t' << b << '\t' << c << endl;
	return 0;
}

本来预计的结果是:

1        3        2

但是结果是:

1        3        3

于是我开始了debug之路,后面发现了原因出在||处,

对于b != 2 || c-- != 3,左侧b的值为3,不为2,||左侧已经为true了,故不再对右侧进行操作。

所以有了这篇博客。

二.&和&&、|和||的区别

1.介绍

&和|称为布尔运算符,&&和||称为条件布尔运算符。

其中,&和&&两边为true则为true,一边为false则为false;|和||两边为false则为false,一边为true则为true。

2.区别

对于&&运算时,若左边为false,则结果为false,不再考虑右侧的操作数,即若&&左边为false,则不对&&右边的表达式进行操作。

对于||运算时,若左边为true,则结果为true,不再考虑右侧的操作数,即若&&左边为true,则不对||右边的表达式进行操作。

对于&和|来说,它们总是需要计算左右两个操作数。

注:&和|还可用作位运算,详情可见:位运算。

3.总结

相比&和|来说,使用&&和||对程序性能会有所提高,特别是在大量使用时感受尤为明显,故在实际开发中,我们应该尽量使用&&和||代替&和|。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值