Возможный дубликат:
C: начальное объявление цикла for int
Можем ли мы объявить некоторые переменные в операторе for
в программировании на C? Если да, то в какой версии стандарта c мы найдем эту функцию?
Возможный дубликат:
C: начальное объявление цикла for int
Можем ли мы объявить некоторые переменные в операторе for
в программировании на C? Если да, то в какой версии стандарта c мы найдем эту функцию?
В C89 / C90 все объявления должны появляться в начале блока:
/* valid in C89/C90 */
printf("Hello\n");
{
int i;
for (i = 0; i < 10; i++) {
int j = i % 3;
printf("%d\n", j);
}
}
Начиная с C99, вы можете смешивать объявления и операторы, а также объявлять переменные в первой части for
:
/* valid in C99 */
printf("Hello\n");
int whatever;
for (int i = 0; i < 10; i++) {
int j = i % 3;
printf("%d\n", j);
}
Да, это можно сделать, начиная со стандарта c99. Прямая компиляция кода:
int main()
{
for(int i = 0; i<10; i++)
printf("%d\n", i);
return 0;
}
with (по умолчанию "gnu89") gcc
даст вам ответ:
В функции
main
:
error: начальные объявления цикла for разрешены только в режиме C99
примечание: используйте параметр -std = c99 или -std = gnu99 для компиляции кода
В чистом C вы не можете объявлять переменные в операторе for
. Эта функция доступна только в C ++. В C все переменные должны быть объявлены в начале блока кода.
c99
. - person Grijesh Chauhan   schedule 21.12.2012