簡體   English   中英

For循環自動遞增變量

[英]For loop Auto increment variable

for(int i=0; i < 5; i++)循環中,在 printf 讀取它之前, i不是已經增加了i++嗎? 如果是這樣,它應該返回i=1對嗎? 這里最初返回0的概念是什么。

public class Application {
    public static void main(String[] args) {

        for(int i=0; i < 5; i++) {
            System.out.printf("The value of i is: %d\n", i);
        }
    }
}

14.14.1。 基本的聲明

BasicForStatement: for ( [ForInit]; [Expression]; [ForUpdate] ) Statement
  • 如果 Expression 不存在,或者它存在並且其評估(包括任何可能的拆箱)產生的值是 true,則執行包含的 Statement。 然后有一個選擇:

    • 如果 Statement 的執行正常完成,則依次執行以下兩個步驟:

      • 首先,如果存在 ForUpdate 部分,則表達式按從左到右的順序計算; 它們的值(如果有)將被丟棄。 如果任何表達式的求值由於某種原因突然完成,for 語句也會因為同樣的原因而突然完成; 突然完成的語句右側的任何 ForUpdate 語句表達式都不會被計算。

      • 其次,執行另一個 for 迭代步驟。

在您的示例中,這意味着i++將在System.out.printf行之后執行。

不,循環增量是在循環體的末尾計算的。

行為與

 for(int i=0; i < 5; ) {
            System.out.printf("The value of i is: %d\n", i);
           //whatever


           //at the very end; just before exiting the loop 
           i = i + 1;
           // exit the loop
        }

在 for 循環中,循環僅在 i < 5 時才運行檢查。因為它是真的,所以它會允許訪問循環,其中 i 仍然為零(0)並執行循環內的語句,然后將 i 加一( i++).Where 那么增加的 i 將被考慮到條件中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM