Другие языки программирования и технологии
зачем в программировнии константы?
я знаю что такое константа. просто немогу представить зачем она нужна. а что нам мешает использоваться обычную переменную и просто ее не менять?
константа-очень важная вещь в программировании, когда изучишь язык поподробнее поймёшь) а сейчас, раз она тебе не нравится можешь ей не пользоваться (потом всё равно придётся)
Memet Memet
зачем отвечать так что все равно непонятно? просто приведи какой нибудь просто пример чтоб я удовлетворил свой интерес. бля ну не ради таких же ответов я спрашивал это . .
Константы, конечно, нужны!
Очень часто без них бывает невозможно построить сколько-нибудь серьезную программу.
Простейший пример: в использовании массивов на С или С++ для задания диапазона возможных значений можно использовать только константу, а переменную нельзя. И компилятор не пропустит.
(ну это так, если просто выражаясь...)
Очень часто без них бывает невозможно построить сколько-нибудь серьезную программу.
Простейший пример: в использовании массивов на С или С++ для задания диапазона возможных значений можно использовать только константу, а переменную нельзя. И компилятор не пропустит.
(ну это так, если просто выражаясь...)
Memet Memet
спасибо, пример понятен
Роман Ломакин
для того чтобы задать массив не обязательно исполльзовать константы, можно сразу цифры вписывать...
Вячеслав Рязанов
пример не совсем удачный
допустим в Java имеется переменная целого типа с начальным значением 10
int n = 10;
создаю массив указав его размер с помощью этой переменной n
int[] a = new int[n];
но это не значит, что начиная с этого места я не могу менять значение переменной n
допустим в Java имеется переменная целого типа с начальным значением 10
int n = 10;
создаю массив указав его размер с помощью этой переменной n
int[] a = new int[n];
но это не значит, что начиная с этого места я не могу менять значение переменной n
Здесь важна семантика. Если мы решили, что значение в принципе меняться не может, то это и есть случай константы. Неизменность константы гарантируется компилятором.
"что нам мешает использоваться обычную переменную и просто ее не менять? "
Ничто не мешает, но переменная она и есть переменная, её при желании (или случайно) всё-таки изменить можно. А константа задаётся 1 раз, никаких случайных ошибок тут быть не может, компилятор просто не позволит присвоить новое значение.
Пример: число "пи", записывать в переменную смысла нет, потому что значение не может и не должно меняться, поэтому это константа.
Так же константы позволяют оптимизировать код при компиляции, т. к. значения констант уже известны, в случае с переменными - анализ их значений всегда происходит во время выполнения. Тот же пример с двумерным массивом: его размерность задаётся константами, потому что это позволяет при компиляции вывести формулы для обращения к конкретному элементу.
Массив 4 строки на 6 столбцов хранится в памяти непрерывно в виде последовательности из 24 значений.
Чтобы обратиться к конкретному элементу (2; 5) программа вычисляет смещение по формуле: 6*2+5 = 17, а если бы размерность задавалась переменными, то после создания массива программа не знала бы ширину массива (длину строки).
"что нам мешает использоваться обычную переменную и просто ее не менять? "
Ничто не мешает, но переменная она и есть переменная, её при желании (или случайно) всё-таки изменить можно. А константа задаётся 1 раз, никаких случайных ошибок тут быть не может, компилятор просто не позволит присвоить новое значение.
Пример: число "пи", записывать в переменную смысла нет, потому что значение не может и не должно меняться, поэтому это константа.
Так же константы позволяют оптимизировать код при компиляции, т. к. значения констант уже известны, в случае с переменными - анализ их значений всегда происходит во время выполнения. Тот же пример с двумерным массивом: его размерность задаётся константами, потому что это позволяет при компиляции вывести формулы для обращения к конкретному элементу.
Массив 4 строки на 6 столбцов хранится в памяти непрерывно в виде последовательности из 24 значений.
Чтобы обратиться к конкретному элементу (2; 5) программа вычисляет смещение по формуле: 6*2+5 = 17, а если бы размерность задавалась переменными, то после создания массива программа не знала бы ширину массива (длину строки).
В некоторых технологиях (.Net Framework в частности) кроме констант существуют ещё и ридонли поля (переменные, не меняющие значения) , однако это не одно и то же. Принципиальная разница между константой и переменной состоит в том, что значение константы компилируется и заносится в программу. Это обеспечивает более быстрый доступ к неизменяемым данным, а ридонли переменная всё-таки получает значение при каждом запуске программы, это требует некоторых дополнительных затрат ресурсов.
В объектно-ориентированном программировании всегда, когда функция принимает параметр, должна принимать константную ссылку. Это помогает избежать случайного изменения объекта, когда, например, мы должны получить только адрес переменной, но не должны ее изменять. Или функция также может быть константной, т. к. не должна изменять объект. Напр, функция вывод на экран. Она не должна изменять сам объект.
Для удобства.
Константы старайся использовать как можно чаще!! !
Еще они предотвращают от такой ошибки, как изменения значения должной константы.. . Например, если гте-то по ошибке константе присвоить значение, то компилятор выдаст ошибку :)) и ты исправишь, а если она не была обозначена как константа, компилятор пропустит и ничего хорошего :(
Еще они предотвращают от такой ошибки, как изменения значения должной константы.. . Например, если гте-то по ошибке константе присвоить значение, то компилятор выдаст ошибку :)) и ты исправишь, а если она не была обозначена как константа, компилятор пропустит и ничего хорошего :(
Похожие вопросы
- Вопрос про константы в С++ внутри.
- Почему числа в языках программирования называются константами?
- Почему требует константу? С++
- как сделать так чтобы. Вот например вводишь ты значение, и это значение становится константой.
- зачем в php константы и и переменные? не вижу в этом смысла, обьясните
- В двух массивах строковых констант хранятся слова:существительные и глаголы. Составте программу, которая выводит:
- абсолютные непонятки с перечислением констант (enum) в с++ соответсвенно
- скажите для чего в с++ константы, можно просто взять переменную например int x=15; и не менять её
- В кких целях используется описание массива как типизированной константы?
- C# Почему const uint SIZE не воспринимается массивом, как константа, а int работает? Погрешности с double