-1

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

}                     
4

3 回答 3

0

所以第一个例子是为主for循环的每次迭代重置结果,所以它每次都需要从头开始重新计算,而第二个例子是保持之前的计算值。不需要第二个示例中的 if 就是它。

于 2013-10-11T05:55:53.933 回答
0

减量运算符修改调用它的变量。e--有效也是如此e = e - 1(除了表达式的整体结果不同,见下文)。

这段代码:

result = 1; 
e = i; 
while(e > 0) { 
  result *= 2; 
  e--; 
} 

开始,result = 1然后循环i迭代,将 中的值加倍resultfor您似乎更喜欢使用的等效代码:

result = 1; 
for (e = 0; e < i; e++) {
  result *= 2; 
} 

递减(和递增)运算符有两种形式:前缀后缀,具体取决于运算符是在其操作数之前(前缀)还是之后(后缀)。两者都可以在您询问的代码中使用,因为唯一的区别是表达式的结果。

前缀:假设我们有x = 5. 表达式--x具有值4:首先我们递减x,然后我们将其新值作为表达式的结果。

后缀:假设我们有x = 5(再次)。表达式x--具有 value 5x最终包含4首先我们获取当前 valuex作为表达式的结果,然后将其递减(因为--is after 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"
于 2013-10-11T05:58:17.790 回答
0

我发现通过放置 System.out.println(e) 我可以“看到”变量“e”的行为,以便理解递减。

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>java 电源:1、0、2、1、1、0、3

e = 1(iteration 1), 2^1, e(1) 减为0, e = 2(iteration 2), 2^2, e(2) 减为1, e = 1 re-enter while but is忽略,因为 2^1 已注册,e (1) 减为 0,e = 3(迭代 3),2^3...</p>

于 2016-06-15T15:04:46.893 回答