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

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 8, средняя оценка - 4.63
dominqnta
2 / 2 / 0
Регистрация: 26.12.2013
Сообщений: 42
Завершенные тесты: 2
14.03.2014, 15:26     Константы и C++ #1
Скажите новичку зачем в C++ константы? И для чего они?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.03.2014, 15:26     Константы и C++
Посмотрите здесь:

встроенные константы в С++ (pi e) C++
C++ Инициалиация константы
Ввод константы C++
C++ Определение константы
Константы препроцесора C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
aLarman
636 / 557 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
14.03.2014, 15:30     Константы и C++ #2
ну, наверное, что бы их никто не мог изменить?)
programina
 Аватар для programina
1912 / 597 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
14.03.2014, 15:35     Константы и C++ #3
dominqnta, страховка на случай если кто-то захочет изменить значение обьекта. Компилятор выдаст предупреждение об ошибке.
TenGen
Будущее рядом
 Аватар для TenGen
96 / 94 / 20
Регистрация: 06.03.2014
Сообщений: 342
14.03.2014, 15:36     Константы и C++ #4
dominqnta, например, вы работаете с каким то массивом фиксированного размера. При его обработке в разных частях программы вам приходится указывать его размер. Тогда удобнее объявить const int array_size = 34; и пользоваться ей. Она будет защищена от случайного (и намеренного!) изменения и адаптировать код к другим размерам массива будет проще.
Jasont
17 / 17 / 6
Регистрация: 05.02.2013
Сообщений: 69
Завершенные тесты: 1
14.03.2014, 15:59     Константы и C++ #5
Исключительно для удобства.
К примеру, в расчете математических задач часто используется число пи(3,14...). Можно его ввести в виде константы pi. Задать значение до 20 знака. И использование константы тогда меньше засоряет код.
В бухгалтерских программах используется много постоянных величин несколько десятков раз. И в этом случает удобнее задавать константы вместо чисел.
Переменные здесь не подойдут. Числа должны быть защищены от случайного изменения.
John Prick
754 / 687 / 123
Регистрация: 27.07.2012
Сообщений: 1,974
Завершенные тесты: 3
14.03.2014, 16:01     Константы и C++ #6
Между прочим:
C++
1
2
const int N = 10;
int a[N];
компилируется.
А так:
C++
1
2
int N = 10;
int a[N];
уже нет.

Так что без констант не обойтись.
TenGen
Будущее рядом
 Аватар для TenGen
96 / 94 / 20
Регистрация: 06.03.2014
Сообщений: 342
14.03.2014, 16:02     Константы и C++ #7
John Prick, gcc вроде как компилит...
aLarman
636 / 557 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
14.03.2014, 16:05     Константы и C++ #8
John Prick, си разрешает создание локальных массивов с неконстантным значением размера
C
1
2
3
4
5
6
int main()
{
int n = 10;
int a[n];
return 0;
}
Добавлено через 56 секунд
точнее еще в Си 99 кажется это можно было (недавно подобная тема поднималась, мне об этом говорили, я сейчас так же проверил)
John Prick
754 / 687 / 123
Регистрация: 27.07.2012
Сообщений: 1,974
Завершенные тесты: 3
14.03.2014, 16:07     Константы и C++ #9
TenGen, aLarman, microsoft 7.1 (думаю и другие версии) не компилит. Интересно, что говорит по этому поводу стандарт?
aLarman
636 / 557 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
14.03.2014, 16:16     Константы и C++ #10
в стандарт С99 включено понятие массива переменной длины.
John Prick
754 / 687 / 123
Регистрация: 27.07.2012
Сообщений: 1,974
Завершенные тесты: 3
14.03.2014, 16:22     Константы и C++ #11
Значит майкрософт не прав?
aLarman
636 / 557 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
14.03.2014, 16:25     Константы и C++ #12
значит он не всегда может соответствовать стандарту, по слухам поддержка этого есть в MSVS2013
C99 library support in Visual Studio 2013
TenGen
Будущее рядом
 Аватар для TenGen
96 / 94 / 20
Регистрация: 06.03.2014
Сообщений: 342
14.03.2014, 16:26     Константы и C++ #13
John Prick, почему прав или не прав? Главное, что компиляторы такое позволяют
John Prick
754 / 687 / 123
Регистрация: 27.07.2012
Сообщений: 1,974
Завершенные тесты: 3
14.03.2014, 16:28     Константы и C++ #14
Ну в общем, чтобы писать в переносимом стиле лучше const по возможности добавлять.
programina
 Аватар для programina
1912 / 597 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
14.03.2014, 16:43     Константы и C++ #15
Цитата Сообщение от John Prick Посмотреть сообщение
Между прочим:
Код C++
1
2
const int N = 10;
int a[N];
компилируется.
А так:
Код C++
1
2
int N = 10;
int a[N];
уже нет.
Так что без констант не обойтись.
Странно, у меня все компилируется.
John Prick
754 / 687 / 123
Регистрация: 27.07.2012
Сообщений: 1,974
Завершенные тесты: 3
14.03.2014, 16:47     Константы и C++ #16
programina, уже выяснили. Зависит от компилятора.
ValeryS
Модератор
6376 / 4842 / 442
Регистрация: 14.02.2011
Сообщений: 16,045
14.03.2014, 16:58     Константы и C++ #17
Цитата Сообщение от programina Посмотреть сообщение
Странно, у меня все компилируется.
вот здесь, поднимал тему
кое-что про const
dominqnta
2 / 2 / 0
Регистрация: 26.12.2013
Сообщений: 42
Завершенные тесты: 2
26.10.2014, 01:19  [ТС]     Константы и C++ #18
Спасибо всем. Разобрался
TheCalligrapher
С чаем беда...
Эксперт С++
 Аватар для TheCalligrapher
2901 / 1437 / 396
Регистрация: 18.10.2014
Сообщений: 2,650
26.10.2014, 01:41     Константы и C++ #19
Языки С и С++ - очень сильно отличающиеся языки, в том числе и в том, что они считают константами. Поэтому перед тем, как выяснять, какой компилятор прав, а какой нет, сначала разберитесь, о каком языке вы говорите.

В языке С++ массивы бывают только константного (т.е. известного при компиляции) размера. Если ваш С++ компилятор разрешает массивы неконстантного размера без выдачи диагностического сообщения - значит это не С++ компилятор.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.10.2014, 02:20     Константы и C++
Еще ссылки по теме:

C++ Константы, переменные
Указатели и константы C++
C++ Статическе константы

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

Или воспользуйтесь поиском по форуму:
DrOffset
6428 / 3802 / 882
Регистрация: 30.01.2014
Сообщений: 6,601
26.10.2014, 02:20     Константы и C++ #20
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Если ваш С++ компилятор разрешает массивы неконстантного размера без выдачи диагностического сообщения - значит это не С++ компилятор.
Или значит, что это G++
VLA там - расширение, включенное по-умолчанию.
Yandex
Объявления
26.10.2014, 02:20     Константы и C++
Ответ Создать тему
Опции темы

Текущее время: 01:29. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru