Kernighan, B. W. and Ritchie, D. M. "The 'C' Programming Language"; Chapter 26

# 26. Анахронизмы.

Так как язык "C" является развивающимся языком, в старых программах можно встретить некоторые устаревшие конструкции. Хотя большинство версий компилятора поддерживает такие анахронизмы, они в конце концов исчезнут, оставив за собой только проблемы переносимости.

В ранних версиях "C" для проблем присваивания использовалась форма =оп, а не оп=, приводя к двусмысленностям, типичным примером которых является

     x = -1

где x фактически уменьшается, поскольку операции = и - примыкают друг к другу, но что вполне могло рассматриваться и как присваивание -1 к x.

Синтаксис инициализаторов изменился: раньше знак равенства, с которого начинается инициализатор, отсутствовал, так что вместо

     int x = 1;

использовалось

     int x 1;

Изменение было внесено из-за инициализации

     int f (1+2)

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