Компилятор не неправильный , но отсутствует возможность распечатать значимую ошибку.
Очевидно, он предупреждает, если вы объявляете переменную, но никогда не «используете» ее -и присвоение долины ему соответствует его использованию.Два фрагмента кода эквивалентны;первый случай немного облегчает компилятору обнаружение проблемы.
может выдать предупреждение для переменной, значение которой никогда не читается.И я не удивлюсь, если это будет сделано на более высоком уровне оптимизации.(Анализ, необходимый для оптимизации, также полезен для обнаружения проблем такого рода.)
Компилятору просто невозможно обнаружить все возможные проблемы такого рода;это было бы равносильно решению проблемы остановки.(Я думаю.) Вот почему языковые стандарты обычно не требуют подобных предупреждений, и разные компиляторы тратят разные уровни усилий на обнаружение таких проблем.
(На самом деле, компилятор, вероятно, может обнаружить все неиспользуемые проблемы с переменными,но за счет некоторых ложных срабатываний, т. е. выдачи предупреждений для случаев, когда на самом деле проблем нет.)