我无法弄清楚递减运算符(e--) 在下面的代码中工作,所以我写了下面的另一个类 得到相同的结果。我想知道减量运算符如何 在Power类中实现了这一结果。 - 新手。
int result, e;
for(int i=0; i < 10; i++) {
result = 1;
e = i;
while(e > 0) {
result *= 2;
e--;
}
System.out.println("2 to the " + i +
" power is " + result);
}
为实现相同结果而编写的代码
int result = 1;
for(int i=0; i < 10; i++) {
if (i > 0) {
result*=2;
}
System.out.println("2 to the " + i +
" power is " + result);
}
答案 0 :(得分:0)
因此,第一个示例是重置main for循环的每次迭代的结果,因此每次都需要从头开始重新计算,其中第二个示例保留先前的计算值。第二个例子中的if是不需要的。
答案 1 :(得分:0)
递减运算符修改调用它的变量。所以e--
实际上是e = e - 1
(除了表达式的整体结果不同,见下文)。
此代码:
result = 1;
e = i;
while(e > 0) {
result *= 2;
e--;
}
以result = 1
开头,然后循环i
次迭代,使result
中的值加倍。使用for
的等效代码,您似乎更熟悉:
result = 1;
for (e = 0; e < i; e++) {
result *= 2;
}
递减(和递增)运算符有两种形式:前缀和后缀,具体取决于运算符是在(前缀)之前还是之后(后缀)操作数。可以在您询问的代码中使用,因为唯一的区别是表达式的结果。
前缀:假设我们有x = 5
。表达式--x
的值为4
:首先我们递减x
,然后我们将其新值作为表达式的结果。
后缀:假设我们有x = 5
(再次)。表达式x--
的值为5
,x
的结尾包含4
:首先我们获取x
的当前值作为表达式的结果,然后我们减少它(因为--
在 x
之后是。)
int x, r;
x = 5;
r = --x; // Prefix
System.out.println("r = " + r + ", x = " + x); // "r = 4, x = 4"
x = 5;
r = x--; // Postfix
System.out.println("r = " + r + ", x = " + x); // "r = 5, x = 4"
答案 2 :(得分:0)
我发现通过放置System.out.println(e)我可以&#34;看到&#34;变量&#34; e&#34;行为是为了理解减量。
class Power {
public static void main(String args[]) {
int e;
int result;
for(int i=0; i < 10; i++) {
result =1 ;
e = i;
while(e > 0) {
System.out.println(e); // not part of the original program
result *= 2 ;
e--;
System.out.println(e); // not part of the original program
}
//System.out.println("2 to the " + i +
//" power is " + result);
}
这是输出:
C:\ Users \ enrique \ Desktop \ Hello.java&gt; java Power:1,0,2,1,1,0,3
e = 1(迭代1),2 ^ 1,e(1)递减为0,e = 2(迭代2),2 ^ 2,e(2)递减为1,e = 1重新进入但是被忽略,因为2 ^ 1已经注册,e(1)递减到0,e = 3(迭代3),2 ^ 3 ...