嵌套在for循环中。减量运算符如何工作?

时间:2013-10-11 05:52:06

标签: java

我无法弄清楚递减运算符(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);

}                     

3 个答案:

答案 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--的值为5x的结尾包含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 ...