区分&&与&,p++与++p以及*p++的执行过程

本文详细探讨了C++中的逻辑与运算符&&和位与运算符&的区别,以及自增运算符p++和++p的执行顺序。特别强调了在表达式中*p++的执行过程,解释了它如何先执行取值操作,然后才进行自增操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

区分&&与&:

int num1;
	num1 = 0;
	if (false && ++num1) {
		cout << "qqqq";
	}
	else {
		cout << "&&:短路与,左边为false,则不会执行右边,num1=" << num1 << endl;
	}
注意:进行if(判断条件)时已经执行了()里面的++num,所以在输出else语句时,num1已经+1if (false & ++num1) {
		cout << "qqqq";
	}
	else {
		cout << "&:与,左边为false,也会执行右边,num1=" << num1 << endl;
	}

在这里插入图片描述

  • &&:短路与,左边为false,则不会执行右边;
  • &:与,左边为false,也会执行右边

区分p++与++p

int p=1,q=1;
	if (p++ == 2) {
		cout << "(p++ == 2)中p立即执行了p+1的操作;p = " << p<<endl;
	}
	else {
		cout << "(p++ == 2)中p是先执行其他操作再执行p++(p+1)的操作;p = "<< p << endl;
	}
	if (++q == 2) {
		cout << "(++q == 2)中q立即执行了q+1的操作;q = " << q << endl;
	}
	else {
		cout << "(++q == 2)中q是先执行其他操作再执行++q(q+1)的操作;q = " << q << endl;
	}

在这里插入图片描述

  • 注意:(在没有括号的情况下)
    (p++ == 2)中p是先执行其他操作再执行p++(p+1)
    (++q == 2)中q立即执行了q+1的操作

*p++的执行过程

  • C++中取值运算符 * 与前置自增运算符++、后置自增运算符++都属于单目运算符,运算符的优先级顺序同为第2级,结合方向为 右到左。
  • 其中,* 使用形式为:*p,用于指针变量,前置自增使用形式为 ++i,后置自增使用形式为 ++i。

虽然自增自减的运算符的优先级比较高,但是++p与p++不同;
p++自增运算(也可称之为右++)是在整个运算表达式运算完成后才进行的;

char ch[] = "hello";
	char* p = ch;

	cout << *p++ << " "<<endl;
	cout << *p << endl;

在这里插入图片描述

  • 所以* p ++是先执行*p操作(即p++以外的其他操作),最后再来执行p++(即p+1)操作;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值