Възможен дубликат:
C: for loop int първоначална декларация
Можем ли да декларираме някои променливи в израза for
в C програмирането? Ако е така, в коя версия на c стандарта ще намерим функцията?
Възможен дубликат:
C: for loop 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;
}
с (по подразбиране "gnu89") gcc
ще ви даде отговора:
Във функция
main
:
грешка: първоначалните декларации на цикъл 'for' са разрешени само в режим C99
забележка: използвайте опция -std=c99 или -std=gnu99, за да компилирате кода си
В чист C не можете да декларирате променливи в израза for
. Тази функция е достъпна само в C++. В C всички променливи трябва да бъдат декларирани в началото на кодовия блок
c99
. - person Grijesh Chauhan   schedule 21.12.2012