Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.12.2009, 06:37   #1
LightWarrior
 
Регистрация: 25.12.2009
Сообщений: 5
По умолчанию Чудеса в Borland C++ 3.1

Помните ж этот старенький компилятор? =)

Код:
#include <iostream.h>
#include <conio.h>

int main()
{
int b = 3;
int *a = &b;

clrscr();

cout << "b = " << b << endl
<< "Address of b: " << &b << endl
<< "a = " << a << endl
<< "*a = " << *a << endl << endl;

*a = 10;

cout << "b = " << b << endl
<< "Address of b: " << &b << endl
<< "a = " << a << endl
<< "*a = " << *a << endl << endl;

getch();

return 0;
}
РЕЗУЛЬТАТ:

Код:
b = 3
Address of b: 0xfff4
a = 0xfff4
*a = 3

b = 3
Address of b: 0xfff4
a = 0xfff4
*a = 10
Хм! А почему переменная "b" осталась равной 3-м? Вернее, в дампе памяти видно, что она поменяла значение, но вывод на экран показывает, что значение не изменилось. То же самое происходит при передаче в функцию аргументов по ссылке (аргументы не подвергаются изменению, как показывает вывод). Если объявлять эти переменные глобальными либо статическими, все работает, как должно. Такое ощущение, будто изначальные значения кешируются в ходе оптимизации. Может, в настройках какую-нибудь галочку стОит снять? Давно уже мучает этот вопрос.

P.S. Если этот вопрос уже поднимался, ткните меня, пожалуйста, носом.

Последний раз редактировалось LightWarrior; 25.12.2009 в 06:39.
LightWarrior вне форума Ответить с цитированием
Старый 25.12.2009, 16:37   #2
Reskov
Форумчанин
 
Аватар для Reskov
 
Регистрация: 17.12.2008
Сообщений: 250
По умолчанию

хз)единственное что могу посоветовать использовать новый компилятор
Код:
b = 3
Address of b: 0xbf81b2c8
a = 0xbf81b2c8
*a = 3

b = 10
Address of b: 0xbf81b2c8
a = 0xbf81b2c8
*a = 10
компилил на http://codepad.org/

Последний раз редактировалось Reskov; 25.12.2009 в 16:40.
Reskov вне форума Ответить с цитированием
Старый 25.12.2009, 20:00   #3
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Как ни старался, не удалось добиться того же эффекта у себя ) Компилировал тем же Borland C++ 3.1
netrino вне форума Ответить с цитированием
Старый 25.12.2009, 23:23   #4
LightWarrior
 
Регистрация: 25.12.2009
Сообщений: 5
По умолчанию

Может, у меня какой-то дистрибутив покоцанный. )))
netrino, а можешь свой выложить куда-нибудь? Буду очень признателен. А то сейчас его уже не везде можно найти.
Надо на досуге покопаться в Турбо Дебаггере, выяснить, что там происходит.))
LightWarrior вне форума Ответить с цитированием
Старый 26.12.2009, 01:16   #5
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Вот он ) Отпишитесь потом как у вас эта версия работает, может я что-то не так делал? )
netrino вне форума Ответить с цитированием
Старый 06.01.2010, 03:37   #6
LightWarrior
 
Регистрация: 25.12.2009
Сообщений: 5
По умолчанию

Да, с Вашим дистрибутивом все работает. Я из него в свой cкопировал конфиги, все равно работает некорректно. Сдается мне, что он у меня лежит дооолго, и уже не вспомнить, где я его взял. Раритет! :D
P.S. В принципе топик можно закрывать. Спасибо!
LightWarrior вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вечерние чудеса и бэды на форуме mihali4 О форуме и сайтах клуба 44 14.03.2010 00:16
Чудеса на виражах! Как такое может быть? Gypsy Общие вопросы Delphi 4 16.10.2009 18:06
Мобило-чудеса техники (Батарейко) Veiron Свободное общение 3 22.02.2008 14:27
Чудеса при написаниее DB компонента kerill_amuse БД в Delphi 2 04.11.2007 20:41