中易网

C++中的右结合到底是怎么看的?

答案:4  悬赏:20  
解决时间 2021-03-23 01:49
比如*p++等价于*(p++),那为什么右结合是先取*p值,再使p+1,而不是先使p+1再取*p呢

哎,因为我也不是太明白,所以也不知道谁说的对啊,事实上,你们写的我还是有点不明白。。。我可能问题问的也不清楚,为什么*p++不是先运算p=p+1,然后再取*p;而是先取*p,再使p=p+1,也就是p++。
最佳答案
在*p++中,间接寻址运算符 * 的优先级低于 后缀自增 ++ 的优先级,所以程序执行该语句的时候会先执行高优先级的后缀自增,即先执行p++,然后执行低优先级的间接寻址,即*p
全部回答
本来是向右运算的,即*(p++)。而自加符号“++”后置了,在P的后面,属于后置运算,出现在表达式中时要遵循“先用后加”的使用规则,所以是先取*p值,再使用p+1. 反之,*++p就与之相反,属于前置运算了
给你举个例子,估计你能看得懂 在c++中 *指针操作符和++a前缀++操作符的优先级是相同的 但是可以查表知道这两个操作符的结合顺序都是r-l也就是right to left(从右到左) 所以当出现 int a=0; *++a;//的时候,因为*和++前缀的优先级相同,但是从右到左执行的,所以*++a的结合顺序是先执行++a,然后再取得*地址 *++a 等价于 *(++a)
问题前后矛盾啊…… *p++等价于*(p++),那为什么右结合是先取*p值,再使p+1,而不是先使p+1再取*p呢 自己都知道是等价于*(p++),后面还又说“那为什么右结合是先取*p值,再使p+1” 这个明显自己跟自己过不去啊 右结合是运算符的属性,不是什么时候右结合的问题,比如=号,就只是右结合,没有左结合的时候。为什么*p++等价于*(p++),这个和左结合,右结合就没有关系,纯粹是运算符优先级的问题 ++的优先级高于指针运算符*,就好像 a+b*c等价于a+(b*c),你能说+就是右结合吗?不是+还是左结合,只不过乘号*的优先级高而已,不是楼上瞎扯的那些
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
内存去哪里了,怎么关后台都还是用了1g运行,
数学反证法 已知直线a平行于b,若直线a于平面
如果自如发现租客养宠物了,会怎么处理
今年五粮液是什么价格?
青岛市崂山区海尔的宿舍条件怎么样,有网线吗
典型家庭教育事例,配合幼儿园教育教学工作事
狮王陶瓷好吗?
衣服发黄怎么办穿过的衣服领口发黄怎么办?
急!急!老年人被狗咬要不要打防犬疫苗
我是洛阳农村户口,已买了社保型养老保险,村
别无选择的贼怎么样
株洲哪个区最好啊?
怎样才能做单手做俯卧撑
热血传奇锻造元宝怎么才能让经验最多?
下雨天车辆停了几个小时就哒哒响没电了
推荐资讯
美国思丽玻尿酸大家有知道的吗,安全吗,效果
上海市南汇区的消费怎么样
想免费收养一条宠物狗
学生一年之中有多少天假期?
我父母都是二级残疾,请问我们现在给他们安装
朗读节奏鲁有执长竿入城门者 文言文
宏基笔记本开机不了,显示英文,Nobootablede
想要买真玉
菲士舞蹈培训连锁机构地址在什么地方,想过去
同居要注意什么
瓦屋村怎么去啊,有事要去办理
北京公积金断了一个月还能买车买房么
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?