Другие уже указали причину. = / == Путаница. Я предпочитаю первую версию, потому что она более близко следует за процессом мышления. Некоторые компиляторы облегчают путаницу с = и ==, давая предупреждение, когда он сталкивается с чем-то вроде
if(a=b)
в этом случае, если вы действительно хотите выполнить задание, вы должны написать
if((a=b))
который я бы тогда написал как
if( (a=b) != 0)
, чтобы избежать путаницы.
Это говорит о том, что в нашем случае с кодом 1 мы имели путаницу = / ==, и написание ее наоборот не помогло бы, поскольку это было сравнение между переменными.