Независимо от языка, так ли необходимы константы, что бы из-за них заморачиваться? Можно просто не менять в программе переменную. А что-бы случайно не забыть, можно назвать, например, const_A.
Ещё в некоторых случаях синтаксис языка допускает в определённом месте только константные выражения. Например, длина массива может быть константой, там нельзя использовать переменные.
Ещё причина — оптимизация. В C операция записи по указателю может изменить почти всё, а const это подсказка, что вот это точно не изменится. Зная значение некоторых констант можно генерировать более эффективный код (заменить умножение на степень двойки сдвигом).
Ну и в C++11 даже возможностей
const оказалось мало, там ещё сверху прикрутили
constexpr :)