Этот вопрос вдохновлен этим вопросом, в котором представлен следующий фрагмент кода.
int s;
if((s = foo()) == ERROR)
print_error();
Я считаю, что этот стиль трудно читать и подвергать ошибкам (как показывает оригинальный вопрос - это было вызвано отсутствием скобок вокруг назначения). Вместо этого я напишу следующее, что на самом деле короче с точки зрения символов.
int s = foo();
if(s == ERROR)
print_error();
Это уже не первый раз, когда я видел эту идиому, и я предполагаю, что есть причины (возможно, исторические), поскольку они так часто используются. Каковы эти причины?