Возможно ли иметь более одного инкремента / переменную?
Да, это возможно. То есть это совершенно законно:
// reverse b into a
for (int i = 0, j = n - 1; i < n; i++, j--) {
a[i] = b[j]
}
Что является / не возможно в заголовке for
цикла?
Это именно то, что вам скажет грамматика. Вот грамматика для оператора for
в C #:
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-initializer
, и for-iterator
допускают составные операторы через statement-expression-list
. См. §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
- нет).