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

Изменения константного значения - C++

Восстановить пароль Регистрация
 
3BEPb_TyTa
 Аватар для 3BEPb_TyTa
18 / 18 / 1
Регистрация: 18.05.2010
Сообщений: 83
09.04.2012, 16:46     Изменения константного значения #1
Всем привет, вопрос такой. Пытаюсь разобраться с приведением типов, в частности с изменением const значений через указатель.

Вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <cstdlib>
#include <iostream>
 
using namespace std;
 
int main(int argc, char* argv[]){
   int const size = 10;
   int* sz = const_cast<int*>(&size);
   *sz = 2;
   cout << size << " " << &size << endl;
   cout << *sz << " " << sz << endl;
   return 0;
}
Вывод программы:

10 0xbff34518
2 0xbff34518

Как так? Почему по одному и тому же адресу хранится два разных значения?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
09.04.2012, 16:52     Изменения константного значения #2
это оптимизации компилятора компилятор вместо size воткнул 10 в печати
3BEPb_TyTa
 Аватар для 3BEPb_TyTa
18 / 18 / 1
Регистрация: 18.05.2010
Сообщений: 83
09.04.2012, 16:59  [ТС]     Изменения константного значения #3
Jupiter, есть способ угомонить компилятор? -)
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
09.04.2012, 17:07     Изменения константного значения #4
3BEPb_TyTa, объяви константу так:
C++
1
int const volatile size = 10;
Yandex
Объявления
09.04.2012, 17:07     Изменения константного значения
Ответ Создать тему
Опции темы

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