Другие языки программирования и технологии

скажите для чего в с++ константы, можно просто взять переменную например int x=15; и не менять её

и не нужно писать огромные строки
В C++ по умолчанию существует два вида констант: целочисленные, имеют тип int; и вещественные, имеют тип double. Целочисленные константы могут быть десятичными, восьмеричными и шестнадцатеричными. Приведение типов числовых констант, при присваивании, осуществляется неявно. Вещественные константы могут быть представлены в десятичной форме, где целую часть от вещественной разделяет точка, либо в экспоненциальной форме. При присваивании переменной вещественного типа отличной от double числовой константы среда разработки может выдать предупреждение о потере точности, в случае явного преобразования типов. Можно подтвердить своё намерение об этом соответствующим суффиксом. Например для float - это f. Пример:

float x = 12.5f;

Макроконстанты объявляются с помощью директивы define и по своей сути представляют текстовую строку, которую требуется подставить в код в указанном месте. Недостаток такого способа заключается в том, что в этом случае ничего не известно о том, что конкретно стоит в этой строке. Это может привести к ошибкам. Поэтому для определения переменной, которая не будет изменять своё значение во время всего времени выполнения программы существует ключевое слово const. Это позволяет избежать возможности изменения программистом значения такой переменной, которое может привести к фатальным ошибкам.
Vadzim Tiani
Vadzim Tiani
62 114
Лучший ответ
Немного добавлю, что объявить массив так
const int n=10; float a[n];
можно, а
int n=10; float a[n];
нельзя.
Не такие и огромные.. .
В целом ответ такой: серьезные программы пишутся, как правило, не одним человеком. И невозможно предсказать, не придет ли другому человеку в голову "поправить" константу на одну функцию, а потом забыть вернуть значение.
Ну и в C++ два типа констант - объявленые через #define и через const. Разберись, какие тебе нужны, там разница принципиальная. И кроме собственно констант, есть константные объекты (с которых можно снимать константность оператором const_cast).
Сергей Мосин
Сергей Мосин
52 845
Будете писать большие проекты в команде - быстро поймёте =)

Когда кто-нибудь из коллег в коде случайно вызовет изменения (и не обязательно явным способом а н-р из-за ошибки адресации при работе с указателями) и вся ваша логика поедет. А если учесть что приложение может быть многопоточным - откуда ноги растут найдете не сразу =)

Борьба между программистами в команде бывает даже идёт из-за пробелов и символов табуляций =), а Вы про константы так.. . ;)
Евгений Ким
Евгений Ким
84 764
Krab Bark ты не прав
В С99 стандарте так можно делать "Массивы переменной длины (variable-length arrays)"
и еще куча плюшек!
в gcc делается так у параметра компилера -std=c99
в С11 вообще красота!
Основная задача - сделать код более понятным.
const int x = 15;
// .. здесь много строк кода
но мы всё равно знаем, что X по-прежнему 15

Вторичная задача - оптимизация кода.

Похожие вопросы