"Андрей Богатырев. Хрестоматия по программированию на Си в Unix" - читать интересную книгу автора

В данном примере было бы еще лучше использовать цикл for, в котором все операции
над индексом цикла собраны в одном месте - в заголовке цикла:

for(i=0; i < 10; i++) printf(...);

А. Богатырев, 1992-95 - 7 - Си в UNIX

1.13. Вспомогательные переменные, не несущие смысловой нагрузки (вроде счетчика пов-
торений цикла, не используемого в самом теле цикла) принято по традиции обозначать
однобуквенными именами, вроде i, j. Более того, возможны даже такие курьезы:

main(){
int _ ;
for( _ = 0; _ < 10; _++) printf("%d\n", _ );
}

основанные на том, что подчерк в идентификаторах - полноправная буква.

1.14. Найдите 2 ошибки в программе:

main(){
int x = 12;

printf( "x=%d\n" );
int y;
y = 2 * x;
printf( "y=%d\n", y );
}

Комментарий: в теле функции все описания должны идти перед всеми выполняемыми опера-
торами (кроме операторов, входящих в состав описаний с инициализацией). Очень часто
после внесения правок в программу некоторые описания оказываются после выполняемых
операторов. Именно поэтому рекомендуется отделять строки описания переменных от
выполняемых операторов пустыми строками (в этой книге это часто не делается для эко-
номии места).

1.15. Найдите ошибку:

int n;
n = 12;
main(){
int y;
y = n+2;
printf( "%d\n", y );
}

Ответ: выполняемый оператор n=12 находится вне тела какой-либо функции. Следует
внести его в main() после описания переменной y, либо переписать объявление перед
main() в виде