C не заботится об отступах (он заботится только о пробелах в той степени, в которой он разделяет токены). Если вы хотите, чтобы несколько операторов входили в цикл for
(или цикл while
, или оператор if
и т. Д.), Необходимо разделить эти операторы фигурными скобками:
for ( i = 0; i < 10; i++ )
printf( "this statement is part of the loop\n" );
printf( "this statement is NOT part of the loop\n" );
против
for ( i = 0; i < 10; i++ )
{
printf( "this statement is part of the loop\n" );
printf( "so is this\n" );
}
Обычно рекомендуется использовать фигурные скобки, даже если у вас есть только одно утверждение:
while ( some_condition )
{
do_something();
}
Вы также создали две отдельные переменные с именем i
:
int i = 10; // first instance
for ( int i = 1; i <= 20; i++ ) // second instance of i "shadows" the first
Это работает, потому что цикл for
создает новый scope , и вы можете иметь переменные в разных областях с одним и тем же именем. Переменная i
в цикле for
скрывает или скрывает переменную i
, объявленную в начале программы. Когда цикл for
завершается, объявленный в нем i
перестает существовать, поэтому вы печатаете значение i
, объявленное в начале программы.