c语言运算符结合性

运算符的结合性是自右向左是什么意思?就是先和运算符右边的数据做运算然后在和左边的数据做运算是这个意思吗?那么*x++和*(x++)的效果一样吗... 运算符的结合性是自右向左 是什么意思?
就是先和运算符右边的数据做运算 然后 在和左边的数据做运算 是这个意思吗?
那么*x++ 和*(x++) 的效果一样吗
展开
 我来答
shorker
2010-05-15 · TA获得超过130个赞
知道答主
回答量:68
采纳率:0%
帮助的人:59.4万
展开全部
效果是不一样的。要想搞清楚这个问题。就必须先弄懂运算符的优先级问题,然后再清楚++符号在左边在在右边的区别。
在你举的例子中,*的级别低于()的级别,所以计算机在运行结果的时候就先计算括号里面的。然后再考虑你从左到右的计算。
再次就是要弄清楚符号++在左在右的问题。
在左是先加1,在X值上加1再运算该表达式的值,在右是先用该值进行计算表达式,然后再是在X值上加1.
不懂可以多问问,希望能帮助你更多!
FrankHB1989
2010-05-15 · TA获得超过4.2万个赞
知道大有可为答主
回答量:4569
采纳率:100%
帮助的人:3091万
展开全部
1L 脱壳期的蛹 错误,将x指针指向的变量自增的表达式应该是(*x)++。

2L shorker 不确切,所有单目运算符优先级相同,无论++是在左边还是在右边。

优先级相同时,结合性规则才有效。由于*和++优先级相同,且为右结合性,*x++和*(x++)等价。
可以说,结合性规则在具有多个优先级相同的运算符的表达式中指定了一种新的临时的优先级规则,以便确定运算顺序(所以 LS 引用的资料里面说“后缀 ++ 和 -- 操作符本质上比前缀一目操作的优先级高”——像++x--这样等价于++(x--))。
另外要注意,ISO/IEC C标准没有规定求值顺序。例如(*(++p))-(++(*p))先计算减数还是先被减数,是不确定的,和实现(编译环境)有关。所以说先和……计算,后和……计算这种思路也是不确切的。
通俗地说,结合性规则只是确定表达式中相同优先级运算符的一些子表达式中,括号具体加在哪个上面。至于加上括号以后互不嵌套的子表达式具体先计算哪一个,从语言的规则本身是无法确定的。
====
[原创回答团]

参考资料: 原创

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
脱壳期的蛹
2010-05-15
知道答主
回答量:8
采纳率:0%
帮助的人:12.4万
展开全部
是啊,就是先和右边的,再和左边的。
你举的那两个例子是这样的:
*X++是将X指针指向的变量加1
*(X++)是将X指针加1(是地址加一个存储单位)然后取指向的空间里的值。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
落日呆呆
2010-05-15 · 超过14用户采纳过TA的回答
知道答主
回答量:54
采纳率:0%
帮助的人:42.6万
展开全部
效果一样,自右向左是指从右边向左边运算
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
FrankHB
2010-05-15
知道答主
回答量:5
采纳率:0%
帮助的人:0
展开全部
后缀 ++ 和 -- 操作符本质上比前缀一目操作的优先级高, 因此 *p++ 和 *(p++) 等价, 它自增 p 并返回 p 自增之前所指向的值。要自增 p 指向的值, 使用 (*p)++, 如果副作用的顺序无关紧要也可以使用 ++*p。

参考资料: http://c-faq-chn.sourceforge.net/ccfaq/node51.html

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式