2015-11-08 39 views
0

我卡在最后一个表达式中,基本运算符:为什么int z = x-- + 2 * x = 25?什么是计算过程?

不应将int z = x-- + 2*x的计算步骤设置为:int z = (9) + 2(9)= 27

但是,当我尝试运行它时,为int z指定的结果是25,为什么?

下面是表达式:

int x = 10; 

int y = --x + x; 

int z = x-- + 2*x; 

,其结果是:

[1] x = 10 

[2] x = 9; y = 18 

[3] x = 8; z = 25 
+1

'X - '是** **后 - 减运算符。所以,'x'的值将首先用于表达式,然后递减。 – Tushar

+1

http://stackoverflow.com/questions/1546981/post-increment-vs-pre-increment-javascript-optimization重复? –

回答

1

在启动

int x = 10; 

当您运行

int y = --x + x; 

x得到了由-1递减然后x成为9所以9+9 = 18

在此行

int z = x-- + 2*x; 

第一X是9然后得到了由-1递减则X成为8所以9+8*2 = 25

N:乙

  • pre increment/decrements首先执行,如++x/--x;
  • increment/decrements执行最后像x++/x--
+0

非常清楚; D非常感谢! – Yoyashi

+0

@DummyMe欢迎:) –