我想解决这个问题:
x = 10; y = 0; z = 5;
y = z * x++
y = z * ++x
我正在阅读的指令maunal(500页长)告诉我的是x ++问题的答案是:
y = 50 and x = 11.
我知道如何获取x ++所有你需要做的就是增加1。
x = x + 1.
有人可以帮助我,因为我无法弄清楚我做错了什么!我不明白这本书有哪些来自50!
答案 0 :(得分:3)
您在这里遇到的问题涉及增量后和预增量。
执行x++
时,您将进行后递增...这意味着递增仅在语句被评估之后发生。
所以,给出以下代码:
x = 10; y = 0; z = 5;
y = z * x++;
JavaScript执行此操作:
x = 10; y = 0; z = 5;
y = z * x++;
// Ignore Post-Increment, Evalutate
y = z * x;
y = 5 * 10;
y = 50;
// Now Increment x - POST-INCREMENT
x = x + 1;
x = 10 + 1;
x = 11;
执行++x
时,您正在预先递增...这意味着递增将在评估语句之前发生:
x = 10; y = 0; z = 5;
y = z * ++x;
// Do Pre-Increment
x = x + 1;
x = 10 + 1;
x = 11;
// Evaluate
y = z * x;
y = 5 * 11;
y = 55;
答案 1 :(得分:2)
后增量表达式的结果是变量增加之前的值。
所以这个:
y = z * x++;
大致相当于:
y = z * x; // y = 50
x = x + 1; // x = 11 (the increment is done afterwards)
另一方面,预增量运算的计算结果为增量后的值。所以这个:
y = z * ++x;
大致相当于:
x = x + 1; // x = 11 (the increment is done first)
y = z * x; // y = 55
答案 2 :(得分:1)
x ++在递送值后增加x:
y = z * x++ // 5 * 10 // and 10 become 11 after operation
++ x在交付价值之前增加x:
y = z * ++x // 5 * 11
花哨的名字发布和预增量
答案 3 :(得分:1)
您应该了解后增量和预增量运算符之间的区别。
在y = z * x++
情况下,x首先在表达式中使用,然后递增。因此,表达式的值变为y = 5 * 10
,之后x的值增加到11。
在另一种情况下,使用预增量运算符。所以它首先递增并在以后使用。因此,在这种情况下,该值变为55.
答案 4 :(得分:1)
是后增量运算符。 c ++使用x的值,然后递增它 ++ x(预增量)增量x,然后使用它
答案 5 :(得分:0)
++
,即x
在赋值后递增。
换句话说,y计算为50 ,然后 x递增。
答案 6 :(得分:0)
示例:
a * (b++)
它与:
相同a * b;
b = b + 1; //POST increment
但
a * (++b);
是这样的:
b = b + 1; //PRE increment
a * b;
答案 7 :(得分:0)
首先你有
x = 10;
y = 0;
z = 5;
然后你做:
y = z * x++ = 5 * 10 = 50
之后你会得到:
y = 50;
x = 11; (because x = x+1)
然后:
y = z * ++x = 5 * 11 = 55