С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
11 / 11 / 2
Регистрация: 23.12.2012
Сообщений: 45

Константа

23.11.2013, 01:06. Показов 1262. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Hello, world! Сышал когда-то где-то на просторах интернета (кстати где-то на этом форуме), что якобы можно обмануть компилятор и присвоить константе другое значение вот таким образом
C++
1
2
3
const int a=14;
int* pta=(int*)&a;
*pta=5;
и действительно, никакой ошибки компилятор не выдал! И я решил проверить, сделал вывод и вот чего получилось
C++
1
2
3
4
5
6
const int num=14;
cout<<&num<<endl;
int* ptnum=(int*)&num;
cout<<num<<' '<<*ptnum<<' '<<ptnum<<endl; // вывел 14 14 и адрес num
*ptnum=12;
cout<<num<<' '<<*ptnum<<' '<<ptnum<<endl; // вывел 14 5 и адрес num
Как видите значение num так и осталось равно 14, а значение при разыменовании ptnum стало 5, при этом само значение указателя так и осталась адресом константы num... Это как? Тогда куда записывается число 5?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.11.2013, 01:06
Ответы с готовыми решениями:

Константа.
Надо найти константу(количество строк) в будущей матрице, если известно сколько элементов будет и количество столбцов. И тогда как...

Константа
Извините))) я совсем новичок. Как мне описать константу? х=2.4

Константа Пи в С++
Как записать константу Пи (3.14......) в С++, переменная M_PI с библиотеки Math не работает почему то, подскажите что делать .

5
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
23.11.2013, 02:04
Цитата Сообщение от Darthriddikc Посмотреть сообщение
Как видите значение num так и осталось равно 14
ничего мы не видим. это ваш компилятор взял и подставил вместо num 14. другой компилятор может этого не сделать.
0
11 / 11 / 2
Регистрация: 23.12.2012
Сообщений: 45
23.11.2013, 02:20  [ТС]
значит это visual так делает, но тогда куда он заносит 5?

Не по теме:

(кстати у меня там опечатка, в последнем примере должно *ptnum=5)

0
What a waste!
 Аватар для gray_fox
1610 / 1302 / 180
Регистрация: 21.04.2012
Сообщений: 2,733
23.11.2013, 02:23
Darthriddikc, изменение константы приводит к неопределённому поведению программы.
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
23.11.2013, 02:24
Цитата Сообщение от Darthriddikc Посмотреть сообщение
значит это visual так делает, но тогда куда он заносит 5?
это
Цитата Сообщение от Jupiter Посмотреть сообщение
взял и подставил вместо num 14
означает что строка 6 выглядит так
C++
1
2
3
cout << 14 << ' ' 
     << *ptnum << ' '  //тут выводится реально значение константы
     << ptnum << endl; //тут выводится адрес константы
1
11 / 11 / 2
Регистрация: 23.12.2012
Сообщений: 45
23.11.2013, 02:33  [ТС]
Jupiter, а, теперь понял, спасибо, не знал
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.11.2013, 02:33
Помогаю со студенческими работами здесь

Математическая константа Е
Привет всем:) У меня трудности с математикой.Нужно вычислить константу Е по формуле &quot; е = 1 + 1/!1 + 1/!2 + 1/!3 и ...... Заранее...

Строковая константа
Вопрос: Непонятно почему можно так инициализировать строки, например char *szString = &quot;Это строка&quot;?

Константа в классе
Что-то у нас с компилятором какое-то недопонимание. #include &lt;iostream&gt; using namespace std; class Foo{ public: Foo(); ...

Unicode строка-константа
Как задать?

Константа типа short
Как в программе задать константу типа short? Чтобы понятнее было приведу индефикаторы, которые в результате дают соответствующий тип...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru