Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
dominqnta
2 / 2 / 0
Регистрация: 26.12.2013
Сообщений: 44
Завершенные тесты: 2
1

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

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

Скажите новичку зачем в C++ константы? И для чего они?

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.03.2014, 15:26
Ответы с готовыми решениями:

Константы препроцесора
А есть ли где-то список предустановленых констант препроцесора? Мне нужно...

Определение константы
Помогите составить определение следующих данных - константа pi = π =...

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

Экспоненциальные Константы
Всем доброго времени суток. Хотелось бы спросить такую вещь. Вид...

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

36
aLarman
646 / 567 / 164
Регистрация: 13.12.2012
Сообщений: 2,123
Завершенные тесты: 2
14.03.2014, 15:30 2
ну, наверное, что бы их никто не мог изменить?)
1
programina
2053 / 608 / 41
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
14.03.2014, 15:35 3
dominqnta, страховка на случай если кто-то захочет изменить значение обьекта. Компилятор выдаст предупреждение об ошибке.
0
TenGen
Будущее рядом
99 / 98 / 48
Регистрация: 06.03.2014
Сообщений: 342
14.03.2014, 15:36 4
dominqnta, например, вы работаете с каким то массивом фиксированного размера. При его обработке в разных частях программы вам приходится указывать его размер. Тогда удобнее объявить const int array_size = 34; и пользоваться ей. Она будет защищена от случайного (и намеренного!) изменения и адаптировать код к другим размерам массива будет проще.
0
Jasont
20 / 20 / 9
Регистрация: 05.02.2013
Сообщений: 76
Завершенные тесты: 2
14.03.2014, 15:59 5
Исключительно для удобства.
К примеру, в расчете математических задач часто используется число пи(3,14...). Можно его ввести в виде константы pi. Задать значение до 20 знака. И использование константы тогда меньше засоряет код.
В бухгалтерских программах используется много постоянных величин несколько десятков раз. И в этом случает удобнее задавать константы вместо чисел.
Переменные здесь не подойдут. Числа должны быть защищены от случайного изменения.
0
John Prick
837 / 768 / 258
Регистрация: 27.07.2012
Сообщений: 2,180
Завершенные тесты: 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
Будущее рядом
99 / 98 / 48
Регистрация: 06.03.2014
Сообщений: 342
14.03.2014, 16:02 7
John Prick, gcc вроде как компилит...
0
aLarman
646 / 567 / 164
Регистрация: 13.12.2012
Сообщений: 2,123
Завершенные тесты: 2
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
837 / 768 / 258
Регистрация: 27.07.2012
Сообщений: 2,180
Завершенные тесты: 3
14.03.2014, 16:07 9
TenGen, aLarman, microsoft 7.1 (думаю и другие версии) не компилит. Интересно, что говорит по этому поводу стандарт?
0
aLarman
646 / 567 / 164
Регистрация: 13.12.2012
Сообщений: 2,123
Завершенные тесты: 2
14.03.2014, 16:16 10
в стандарт С99 включено понятие массива переменной длины.
0
John Prick
837 / 768 / 258
Регистрация: 27.07.2012
Сообщений: 2,180
Завершенные тесты: 3
14.03.2014, 16:22 11
Значит майкрософт не прав?
0
aLarman
646 / 567 / 164
Регистрация: 13.12.2012
Сообщений: 2,123
Завершенные тесты: 2
14.03.2014, 16:25 12
значит он не всегда может соответствовать стандарту, по слухам поддержка этого есть в MSVS2013
C99 library support in Visual Studio 2013
0
TenGen
Будущее рядом
99 / 98 / 48
Регистрация: 06.03.2014
Сообщений: 342
14.03.2014, 16:26 13
John Prick, почему прав или не прав? Главное, что компиляторы такое позволяют
0
John Prick
837 / 768 / 258
Регистрация: 27.07.2012
Сообщений: 2,180
Завершенные тесты: 3
14.03.2014, 16:28 14
Ну в общем, чтобы писать в переносимом стиле лучше const по возможности добавлять.
0
programina
2053 / 608 / 41
Регистрация: 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
John Prick
837 / 768 / 258
Регистрация: 27.07.2012
Сообщений: 2,180
Завершенные тесты: 3
14.03.2014, 16:47 16
programina, уже выяснили. Зависит от компилятора.
0
ValeryS
Модератор
7372 / 5573 / 707
Регистрация: 14.02.2011
Сообщений: 18,936
14.03.2014, 16:58 17
Цитата Сообщение от programina Посмотреть сообщение
Странно, у меня все компилируется.
вот здесь, поднимал тему
кое-что про const
0
dominqnta
2 / 2 / 0
Регистрация: 26.12.2013
Сообщений: 44
Завершенные тесты: 2
26.10.2014, 01:19  [ТС] 18
Спасибо всем. Разобрался
0
TheCalligrapher
С чаем беда...
Эксперт CЭксперт С++
4833 / 2478 / 695
Регистрация: 18.10.2014
Сообщений: 4,285
26.10.2014, 01:41 19
Языки С и С++ - очень сильно отличающиеся языки, в том числе и в том, что они считают константами. Поэтому перед тем, как выяснять, какой компилятор прав, а какой нет, сначала разберитесь, о каком языке вы говорите.

В языке С++ массивы бывают только константного (т.е. известного при компиляции) размера. Если ваш С++ компилятор разрешает массивы неконстантного размера без выдачи диагностического сообщения - значит это не С++ компилятор.
0
DrOffset
9013 / 4860 / 1196
Регистрация: 30.01.2014
Сообщений: 7,942
26.10.2014, 02:20 20
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Если ваш С++ компилятор разрешает массивы неконстантного размера без выдачи диагностического сообщения - значит это не С++ компилятор.
Или значит, что это G++
VLA там - расширение, включенное по-умолчанию.
0
26.10.2014, 02:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.10.2014, 02:20

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

Инициалиация константы
Здравствуйте, вообщем на шестом ВС вроде была такая возможность, а 2010...

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

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