结合方向的理解

先看下两端代码

1

int a,b,c;
a=1;
b=2;
c=3;
a=c=b;
cout<<a;
return 0;

问a=多少;

2*p++  ;  *++p  ; (*p)++  ;   ++(*p);四者的理解

先分析第一个

单目运符,赋值运算,与条件运算均是自右向左的  ,其余的运算符均是自左向右。

当运算符优先级相同时,结合方向就要发挥作用了,a=c=b可以自右向左看,把b赋值给c,在把c赋值给a。  结果就是a=2.

二分析第二个

首先我们要明白++p与p++的区分

i++整体是旧值,++在后,整体是旧值。
++i整体是新值,++在前,整体是新值。

i++与++i对于i的作用效果是相同的

都等价于i=i+1。

但是两者的执行过程是不相同的

#include<iostream>
using namespace std;
int main()
{
	int i=0;
	cout << i++<<endl;
	cout << i;
    cout << ++i;
	return 0;
}

输出结果为

0
1
2

i++是先执行i将i进行输出然后在进行i+1;

++i是先进行i+1然后在进行输出i;

了解这个后我再来分析;

*p++  ;  *++p  ; (*p)++  ;   ++(*p);

*与p均属于单目运算符,优先级相同,结合方向自右向左;

当优先级不同时,按照优先级的规则运算,相同时,结合方向发挥作用;

*p++自右向左看,先进行p++在进行*p,p++是先执行p在去p+1所以这里相当于是*p;p=p+1;

*++p自右向左看,先进行++p在进行*p,++p是先p=p+1然后在*p相当于是p=p+1 ;  *p;

(*p)++ 括号优先,先*p在p=p+1;

 ++(*p)括号优先,先*p在p=p+1;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值