分页: 1 / 1

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

发表于 : 2007-05-26 20:09
neomi
为什么

代码: 全选

y -= x - x--

代码: 全选

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

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

可第二个值怎么变了?

发表于 : 2007-05-26 20:13
BigSnake.NET
x -= x - x--

-- 与 -= 顺序不确定,不要使用这种不确定的语句

发表于 : 2007-05-26 20:35
neomi
为什么会不确定?

只是想知道原因,这是网上看到的代码

发表于 : 2007-05-26 20:39
BigSnake.NET
neomi 写了:为什么会不确定?

只是想知道原因,这是网上看到的代码
标准没规定

发表于 : 2007-05-26 20:54
neomi
您的意思是

y -= x - x--

确定而

x -= x - x--

不确定?

发表于 : 2007-05-26 20:56
BigSnake.NET
neomi 写了:您的意思是
y -= x - x--
确定而
x -= x - x--
不确定?
都是不确定..只不过在第一种情况中 -= 没有修改x ,所以这种不确定实际上是得到同一个结果的

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

所以
x -= x - x--
x的值并不是因为赋值号-=而改变的,而是因为x--。

发表于 : 2007-05-26 21:31
efan
BigSnake.NET 写了:x -= x - x--

-- 与 -= 顺序不确定,不要使用这种不确定的语句
赋值操作符的优先级是小于--的

发表于 : 2007-05-26 21:32
dogal
复杂

发表于 : 2007-05-26 23:32
jaywee
我是这样想的:x-=x-x--中,
按照运算符的优先级,先运算x=x-(x-x),然后x自减1,所以返回的值应该是X自减1的值,

发表于 : 2007-05-27 11:22
neomi
多谢大家,尤其是 efan,你的解释比较好懂