【发布时间】:2013-12-18 10:38:30
【问题描述】:
在 Java 教程中写 ' 唯一的区别是前缀版本 (++result) 计算为递增值,而后缀版本 (result++) 计算为原始值。 '
如果它们具有相同的运算符(但运算符的顺序不同......),为什么这个表达式的结果会不同?
//here:
int i8 = 2;
i8 = (++i8*i8++) + i8;
//this is simple
// i8 = (3*3) + 3
// i8 + 1 = 13
System.out.println("i8 = " + i8);
// i8 = 13
int i9 = 2;
i9 = i9 + (++i9 * i9++);
// i9 = 2 + ( 3*3)
//why 2? if ++i9 has a first priority and don't adds to incremented value 1
// i9 = 11
//why i9++ don't add a 1??
System.out.println("i9 = " + i9);
// i9 = 11
// another example:
int i10 = 2;
i10 = ++i10 * i10 + i10;
System.out.println("i10 = " + i10);
// i10 = 12
int i11 = 2;
i11 = i11 + ++i11 * i11;
System.out.println("i11 = " + i11);
//i11 = 11
/* print out
*
i8 = 13
i9 = 11
i10 = 12
i11 = 11
*/
我想了解它是如何工作的。为什么在示例中 i8 结果 = 13,但在下一个示例中 i9 结果 = 11。为什么在第二个示例 (2 + (3*3)) 中,第一个值为 2 (但在第一个 (3*3) + 4) 中,如果优先级的第一个运算符必须是 ++i9 ,之后的 i9 = 3和 (3 + (3*3)) ?
【问题讨论】:
-
什么意思?它是这样制作的。这就是它的工作原理,你期待什么样的答案?
-
看起来像家庭作业......我的 C 教授喜欢用指针算术来做这些事情。
-
是的,想了解它是如何工作的
标签: java expression increment