2010-12-09 59 views
2

在C#中,我在循環的頭部看到了一些奇怪而複雜的邏輯。for循環的頭文件允許什麼?

什麼是/不可能在for循環的頭部?是否有可能有多個增量變量?

感謝

+6

有你考慮閱讀的語言定義是什麼? – 2010-12-09 00:04:14

回答

8

是否有可能有一個以上的遞增器/變量?

是的,這是可能的。也就是說,這是完全合法的:

// reverse b into a 
for (int i = 0, j = n - 1; i < n; i++, j--) { 
    a[i] = b[j] 
} 

是什麼/是不可能的for循環的頭?

這正是語法會告訴你的。下面是在C#for聲明語法:

for-statement: 
    for(for-initializer_opt; for-condition_opt; for-iterator_opt) 
     embedded-statement 
for-initializer: 
    local-variable-declaration 
    statement-expression-list 
for-condition: 
    boolean-expression 
for-iterator: 
    statement-expression-list 
statement-expression-list: 
    statement-expression 
    statement-expression-list, statement-expression 

注意,無論是for-initializerfor-iterator允許通過statement-expression-list複合語句。有關其他細節,請參見language specification的§8.8.3。您可能還需要訪問規範的§8.5.1,以確切瞭解local-variable-declaration需要什麼(提示:int i = 0, j = n - 1, k = 42是合法的,但int i = 0, j = n - 1, long k = 42不是)。

+0

只要所有的項目都是一種類型,你可以做很多的聲明和初始化。 – 2010-12-09 00:08:29