在Java中,你可以用这种方式将整数i的后增量多一个:
j + i += 2
。
我想用预增量做同样的事情。
例如j + (2 += i) //This will not work
答案 0 :(得分:3)
只需将增量语句放在括号中。例如,以下内容将输出pre: 2
:
int i = 0;
System.out.println(
((i+=2) == 0)
? "post: " + i : "pre: " + i);
然而,编写这样的代码与混淆有关。将语句拆分为多行将显着提高可读性。
答案 1 :(得分:2)
不确定术语是否存在混淆,但+=
不 一个帖子或预增量运算符! Java遵循后增量/预增量的C / C ++定义,并且它们在标准中被明确定义为一元运算符。 +=
是二进制运算符的快捷方式。它评估如下:
lvalue1 += 5 ;
// is really (almost)
lvalue1 = lvalue1 + 5;
指令的汇编程序看起来与二进制版本不完全相同,但在使用Java的级别上,您看不到它。
后增量/预增量是一元运算符,其功能如下:
i++ ; // is something like _temp = i; i = i + 1; return temp;
++i; // is something like i = i + 1; return i;
这只是它如何工作的一个例子,字节代码不会为后增量情况翻译多个语句。
在你的例子中,你可以说发生了后增量,但实际上,它只是一个增量。这就是为什么我相信你已经做出了(不正确的)跳跃,可能有一个相同操作的预增量版本。但是在C,C ++或Java中不存在这样的事情。
答案 2 :(得分:1)
类似的东西:
int increment = 42;
int oldI = i;
i += increment;
result = myMethod(oldI);
// Rest of code follows.
但你为什么要这样做?
答案 3 :(得分:0)
+=
是预增量。如果你想要post增量,只需用postInc方法创建包装器即可。如果你真的需要它,那么它将比括号更具可读性。