2 trybye TRYBYE 于 2016.01.15 20:08 提问

这个运算顺序是怎么样的,*和++是同一优先级的吧,而且是右结合

图片说明

5个回答

caozhy
caozhy   Ds   Rxr 2016.01.15 20:21

返回的是自增以前的值,然后指针自增。
相当于
p->str ...
p = p++;

devmiao
devmiao p = p++;错了,是p = p+1;
2 年多之前 回复
caozhy
caozhy   Ds   Rxr 2016.01.15 20:24

结合你昨天的问题来说,写程序的根本价值是让人理解程序,或者用人理解的方式写程序。因此并不是说,编译器能编译通过的代码,就是没问题的代码。
这种写代码所需要的准则如同交通规则,虽然看不见,但是确实存在。你不能因为汽车可以闯红灯就认为闯红灯是正常的。
编写含义模糊含混的代码,搞得“没有思路”,再画什么流程图,这不是很搞笑么

qq_27183003
qq_27183003   Ds   Rxr 2016.01.16 22:18

相当于:

*(p->str);
p++;

p++是先用后加,++p是先加后用。

enpterexpress
enpterexpress   Rxr 2016.01.15 21:19

图片说明有什么问题吗?
先进行++,只不过+1是运行指针以后进行的

u013427969
u013427969   2016.01.16 19:13

盆友 这种问题其实没有必要 因为真正编程的时候不会出现这种代码 可读性太差了
而且这种情况是由于优先级产生的 而优先级又是哪里来的呢 ?一部分 C标准有定义 还有就是实现的时候编译器的问题了
程序员的生命是如此的珍贵 在这个波澜壮阔的时代 更要把光阴用在有价值的地方 别钻牛角尖

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
java运算符的结合性和优先级
------- android培训、java培训、期待与您交流! --------     java运算符的结合性     所有的数学运算符都认为是从左到右运算的,java语言中大部分运算符也是从左到右结合的,只有单目运算符、赋值运算符和三目运算符例外,其中,单目运算符、赋值运算符和三目运算符是从右向左结合的,也就是从右向左运算。     乘法和加法是两个可结合的运算,也就是说,这两个运算符
c语言运算符优先级,结合性(左/右结合详解)
http://wenku.baidu.com/link?url=W2ofiBx4yEtrxAAfV8lUaR-bYSIuBox1_DH-1mG6g6q0VeNBR31OfKlaUXRQ6ARQMJEo-r1HVvYBjXVVvtFaSI5CxI4MerOLVxzS3yZRtiS     http://c.chinaitlab.com/basic/873233.html     http
运算优先级、结合性、求值顺序、副作用和顺序点
标题中这几个概念,是很多C/C++程序员在表达式上容易出问题或不清楚的地方,虽然这些概念在很多语言都有体现,但C里面特别明显,所以就以C语言为例子总结下 运算符优先级比较简单,就是指在一个存在多个运算的表达式中,各运算的计算先后顺序,比如a+b*c是先算乘法等。而结合性就是指优先级同级的运算连续的时候,从左到右还是从右到左 然而就是这么两个最简单的概念,如果去网上搜,或一些C语言的书籍
C/C++符号优先级和左/右结合性
如: int a=3;*p; p=&a;//以下例子都是并列关系,不存在先后关系。 (*p)++;//a++. *p++;//*(p++),*(p++)首先*p ,然后p=p+1,指针指向下一个int单元.。表达式为3,但是p不再指向a,而是指向了下一个地址。   ++*p;//++(*p),即*p=*p+1;a=4; *++p;//*(++p),即,先p=p+1;然后取*p;
操作符的优先级 运算符的结合性 操作符的计算顺序
定义 http://www.cnblogs.com/dolphin0520/archive/2011/04/20/2022120.html 一.运算符的优先级     在C++ Primer一书中,对于运算符的优先级是这样描述的:     Precedence specifies how the operands are grouped. It says nothing about
编译原理中运算符的左结合和右结合
文法1:term-> term+factor             |factor 文法2:term->factor+term |factor 文法1中‘+’是左结合的,文法2中‘+’是右结合的。 文法1中term = ( term + factor1) + factor2是符合的,其中factor1和前一个+号结合,所以该运算符‘+’是左结合的 文法2中te
右结合运算符、结合性
什么是右结合运算符 右结合运算符即该运算符首先会计算其右侧运算对象的值 结合性 对于CC什么是右结合运算符在C/C++和Java中,存在一些operator是右结合的,如+=a+=b+=c; //等同a+=(b+=c);右结合运算符即该运算符首先会计算其右侧运算对象的值结合性结合性即运算符首先运算其哪一侧的运算对象对于C、C++请注意除了少数几个运算符如逗号运算符,、&&等会有标准规定运算顺序
C语言之优先级、结合性与自增运算
优先级、结合性这些概念在初学的时候并没有放在心上,今天又碰到这个问题,查了不少资料,再次做个总结。 在标准C语言的文档里,对操作符的结合性并没有做出非常清楚的解释。一个满分的回答是:它是仲裁者,在几个操作符具有相同的优先级时决定先执行哪一个。 每个操作符拥有某一级别的优先级,同时也拥有左结合性或右结合性。优先级决定一个不含括号的表达式中操作数之间的“紧密”程度。例如,在表达式a*b
前置++,后置++与运算符计算顺序问题
今天无意间看到一个讲关于自加的问题,便一发不可收拾,研究了好一阵 。 一道简单的题目引发的思考 该博主从j = (i++) + (i++) + (++i)的输出开始,研究了各编译器的输出结果,并且分析了各个编译器出现结果是如何计算的。先不管其他,下面是我对此问题的理解。(1)在size运算中,前置++/–的结合优先级最高,后置++/–的优先级最小, 所谓结合顺序,就是指分析表达式时操作数与哪
JAVA运算符的优先级与结合性
分隔/成员选择符 单目 强制转换 乘除模 加减 移位(比C多了个无符号右移) 关系(多了个instanceof) 等价 按位(与,异或,或) 条件(逻辑与,或) 三目 赋值 逗号 结合性 单目,三目,赋值是从右向左 其余是从左向右