[问题]关于运算符优先级

C、C++和Java语言
回复
头像
neomi
帖子: 137
注册时间: 2006-08-11 13:03
送出感谢: 0
接收感谢: 0

[问题]关于运算符优先级

#1

帖子 neomi » 2007-05-26 20:09

为什么

代码: 全选

y -= x - x--

代码: 全选

x -= x - x--
的结果不同?

第一个比较好懂,其实就是 y = y - (x - x)

可第二个值怎么变了?
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
送出感谢: 0
接收感谢: 7 次
联系:

#2

帖子 BigSnake.NET » 2007-05-26 20:13

x -= x - x--

-- 与 -= 顺序不确定,不要使用这种不确定的语句
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
头像
neomi
帖子: 137
注册时间: 2006-08-11 13:03
送出感谢: 0
接收感谢: 0

#3

帖子 neomi » 2007-05-26 20:35

为什么会不确定?

只是想知道原因,这是网上看到的代码
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
送出感谢: 0
接收感谢: 7 次
联系:

#4

帖子 BigSnake.NET » 2007-05-26 20:39

neomi 写了:为什么会不确定?

只是想知道原因,这是网上看到的代码
标准没规定
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
头像
neomi
帖子: 137
注册时间: 2006-08-11 13:03
送出感谢: 0
接收感谢: 0

#5

帖子 neomi » 2007-05-26 20:54

您的意思是

y -= x - x--

确定而

x -= x - x--

不确定?
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
送出感谢: 0
接收感谢: 7 次
联系:

#6

帖子 BigSnake.NET » 2007-05-26 20:56

neomi 写了:您的意思是
y -= x - x--
确定而
x -= x - x--
不确定?
都是不确定..只不过在第一种情况中 -= 没有修改x ,所以这种不确定实际上是得到同一个结果的
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
头像
efan
帖子: 238
注册时间: 2006-09-14 21:59
来自: 广东
送出感谢: 0
接收感谢: 0
联系:

#7

帖子 efan » 2007-05-26 21:21

不定吗?应该是定的
x -= x - x--
x-x--的值为0
这时候x已经变为x-1了(执行完x--的结果)
所以x -= 0,仍然是x,也就是x-1

所以
x -= x - x--
x的值并不是因为赋值号-=而改变的,而是因为x--。
传说中的一凡……
头像
efan
帖子: 238
注册时间: 2006-09-14 21:59
来自: 广东
送出感谢: 0
接收感谢: 0
联系:

#8

帖子 efan » 2007-05-26 21:31

BigSnake.NET 写了:x -= x - x--

-- 与 -= 顺序不确定,不要使用这种不确定的语句
赋值操作符的优先级是小于--的
传说中的一凡……
dogal
帖子: 900
注册时间: 2006-11-23 13:04
送出感谢: 0
接收感谢: 0

#9

帖子 dogal » 2007-05-26 21:32

复杂
头像
jaywee
帖子: 517
注册时间: 2006-06-18 21:49
送出感谢: 0
接收感谢: 0
联系:

#10

帖子 jaywee » 2007-05-26 23:32

我是这样想的:x-=x-x--中,
按照运算符的优先级,先运算x=x-(x-x),然后x自减1,所以返回的值应该是X自减1的值,
Time waits for no man!
头像
neomi
帖子: 137
注册时间: 2006-08-11 13:03
送出感谢: 0
接收感谢: 0

#11

帖子 neomi » 2007-05-27 11:22

多谢大家,尤其是 efan,你的解释比较好懂
回复

回到 “C/C++/Java”