Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 8, средняя оценка - 4.63
dominqnta
2 / 2 / 0
Регистрация: 26.12.2013
Сообщений: 42
Завершенные тесты: 2
#1

Константы и C++ - C++

14.03.2014, 15:26. Просмотров 1208. Ответов 36
Метки нет (Все метки)

Скажите новичку зачем в C++ константы? И для чего они?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.03.2014, 15:26
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Константы и C++ (C++):

Инициалиация константы - C++
Здравствуйте, вообщем на шестом ВС вроде была такая возможность, а 2010 ругается: int c=42; const int b=c; int Temp;

встроенные константы в С++ (pi e) - C++
Подскажите, существуют ли в С++ встроенные константы. Например pi=3.14.... или e=2.71.... Если да, то как их вызвать. Если...

константы в классах - C++
в классе используется константа типа double. Как правильно задать ее? как static const double внутри класса или просто написать...

Ввод константы - C++
Имеется массив. Нужно чтоб пользователь вводил его размер, но для этого нужно чтоб переменная была константой. Вопрос как сделать так чтоб...

Экспоненциальные Константы - C++
Всем доброго времени суток. Хотелось бы спросить такую вещь. Вид Экспоненциальной Константы же такой: {E|e} Тогда такая константа что...

Определение константы - C++
Помогите составить определение следующих данных - константа pi = π = 3.14159265358 (12 значащих цифр)

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
aLarman
642 / 563 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
14.03.2014, 15:30 #2
ну, наверное, что бы их никто не мог изменить?)
1
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
14.03.2014, 15:35 #3
dominqnta, страховка на случай если кто-то захочет изменить значение обьекта. Компилятор выдаст предупреждение об ошибке.
0
TenGen
Будущее рядом
98 / 96 / 20
Регистрация: 06.03.2014
Сообщений: 342
14.03.2014, 15:36 #4
dominqnta, например, вы работаете с каким то массивом фиксированного размера. При его обработке в разных частях программы вам приходится указывать его размер. Тогда удобнее объявить const int array_size = 34; и пользоваться ей. Она будет защищена от случайного (и намеренного!) изменения и адаптировать код к другим размерам массива будет проще.
0
Jasont
19 / 19 / 7
Регистрация: 05.02.2013
Сообщений: 75
Завершенные тесты: 2
14.03.2014, 15:59 #5
Исключительно для удобства.
К примеру, в расчете математических задач часто используется число пи(3,14...). Можно его ввести в виде константы pi. Задать значение до 20 знака. И использование константы тогда меньше засоряет код.
В бухгалтерских программах используется много постоянных величин несколько десятков раз. И в этом случает удобнее задавать константы вместо чисел.
Переменные здесь не подойдут. Числа должны быть защищены от случайного изменения.
0
John Prick
801 / 734 / 145
Регистрация: 27.07.2012
Сообщений: 2,107
Завершенные тесты: 3
14.03.2014, 16:01 #6
Между прочим:
C++
1
2
const int N = 10;
int a[N];
компилируется.
А так:
C++
1
2
int N = 10;
int a[N];
уже нет.

Так что без констант не обойтись.
0
TenGen
Будущее рядом
98 / 96 / 20
Регистрация: 06.03.2014
Сообщений: 342
14.03.2014, 16:02 #7
John Prick, gcc вроде как компилит...
0
aLarman
642 / 563 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
14.03.2014, 16:05 #8
John Prick, си разрешает создание локальных массивов с неконстантным значением размера
C
1
2
3
4
5
6
int main()
{
int n = 10;
int a[n];
return 0;
}
Добавлено через 56 секунд
точнее еще в Си 99 кажется это можно было (недавно подобная тема поднималась, мне об этом говорили, я сейчас так же проверил)
0
John Prick
801 / 734 / 145
Регистрация: 27.07.2012
Сообщений: 2,107
Завершенные тесты: 3
14.03.2014, 16:07 #9
TenGen, aLarman, microsoft 7.1 (думаю и другие версии) не компилит. Интересно, что говорит по этому поводу стандарт?
0
aLarman
642 / 563 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
14.03.2014, 16:16 #10
в стандарт С99 включено понятие массива переменной длины.
0
John Prick
801 / 734 / 145
Регистрация: 27.07.2012
Сообщений: 2,107
Завершенные тесты: 3
14.03.2014, 16:22 #11
Значит майкрософт не прав?
0
aLarman
642 / 563 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
14.03.2014, 16:25 #12
значит он не всегда может соответствовать стандарту, по слухам поддержка этого есть в MSVS2013
C99 library support in Visual Studio 2013
0
TenGen
Будущее рядом
98 / 96 / 20
Регистрация: 06.03.2014
Сообщений: 342
14.03.2014, 16:26 #13
John Prick, почему прав или не прав? Главное, что компиляторы такое позволяют
0
John Prick
801 / 734 / 145
Регистрация: 27.07.2012
Сообщений: 2,107
Завершенные тесты: 3
14.03.2014, 16:28 #14
Ну в общем, чтобы писать в переносимом стиле лучше const по возможности добавлять.
0
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
14.03.2014, 16:43 #15
Цитата Сообщение от John Prick Посмотреть сообщение
Между прочим:
Код C++
1
2
const int N = 10;
int a[N];
компилируется.
А так:
Код C++
1
2
int N = 10;
int a[N];
уже нет.
Так что без констант не обойтись.
Странно, у меня все компилируется.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.03.2014, 16:43
Привет! Вот еще темы с ответами:

Не различает константы - C++
Добрый вечер. Есть константы в базовом классе:protected: ... // тут enum'ы и структуры const QString FORMAT_DIR = "format"; ...

Константы в структурах - C++
есть массив структур. допустим 10 элементов. как инициализировать 5 элементов массива константами?

Константы препроцесора - C++
А есть ли где-то список предустановленых констант препроцесора? Мне нужно узнать тип операционой системы, версию, и поочие. Есть ли где-то...

Вычисляемые константы - C++
Можно ли сделать так, чтобы сначала вычислить, а затем сделать константой?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
14.03.2014, 16:43
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru