2013-10-11 76 views
-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); 

}      
+0

「功率級別」=第一個代碼,我難以理解 – user2869580

+0

如果你製作了一些小例子,它可能會對你有所幫助。 –

+1

如果你問了一個真正的問題,這將有所幫助......你不明白的究竟是什麼? 'e'在上面的代碼片段中遞減,因爲程序員可能以前做過C(C這樣做速度更快)。它基本上平行於結果''e'次 – thriqon

回答

0

因此,第一個例子是復位結果爲主要用於循環的每次迭代,所以它需要每次都從頭重新計算,其中作爲所述第二例子是保持以前的計算值。如果在第二個例子中是不需要的。

+0

如果需要獲得第一個println語句,以回答0到0的權力。我們不能將代碼的寫入方式加倍2倍。該部分被跳過。其餘的都是結果* = 2 ;.提前致謝。 – user2869580

0

遞減運算符修改它所調用的變量。因此e--實際上是e = e - 1(除了表達式的總體結果不同,請參見下文)。

此代碼:

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

開始於result = 1,然後循環爲i迭代中result的值加倍。

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

有兩種形式遞減(和增量)運算符:使用for你看起來更舒服等效代碼前綴後綴,這取決於運營商是否是之前(前綴)或後綴(後綴)的操作數。或者可以用在你所問的代碼中,因爲唯一的區別是表達式的結果。我們有x = 5。表達式--x的值爲4:首先我們遞減x,然後我們將其新值作爲表達式的結果。

Postfix:假設我們有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" 
+0

這兩個代碼產生相同的結果,這是一系列println語句,從i = 0到i = 9。沒有第一個代碼中的e-bit,它不會得到這個結果。我想了解這一點。我也理解後綴前綴的事情。這種理解,現在可能有點可疑,並不能幫助我自己找出答案,也不能幫助我們瞭解e - 平方爲什麼會產生並保持其價值的答案。當e接受迭代的價值時,它爲什麼遞減?我擔心我的問題可能被認爲是愚蠢的。我非常想理解這一點。謝謝。 – user2869580

+0

@ user2869580:第一個代碼每次重新計算結果。你的第二個代碼片段保留了以前的結果。在第一個片段中,除了控制循環之外,「e」與計算結果沒有任何關係。結果主要通過重複的'result * = 2'來計算,該結果在每次循環迭代中將'result'中存儲的值加倍。 –

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:\用戶\恩裏克\桌面\ Hello.java> java的功率:1,0,2 (1)遞減到0,e = 2(迭代2),2^2,e(2)遞減到0,1,2,3, 1,e = 1 re -enter雖然2^1已被登記,但e被忽略(1)遞減到0,e = 3(迭代3),2^3 ...