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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.11.2010, 16:38   #1
KemanSR
Форумчанин
 
Регистрация: 03.05.2010
Сообщений: 129
По умолчанию Обман транслятора union'ом по Страуструпу

Страуструп: "Напечатайте последовательность разрядов представления указателя 0 на вашей машине.".
Вот что он предлагает:
Код:
struct fudge
{
union
{
int i;
int* pi;
};
};
fudge a;
a.pi = 0;
int i = a.i;
... и дальше я потерял мысль. Я понимаю что "a.i" и "a.pi" располагаются по одному адресу и что к переменной можно обращатся как к адресу. Вопрос: Что имел ввиду Страуструп в этом упражнении? Благодарю за внимание!
KemanSR вне форума Ответить с цитированием
Старый 30.11.2010, 18:00   #2
c++ learner
Пользователь
 
Регистрация: 19.12.2008
Сообщений: 38
По умолчанию

Наверное, он имел ввиду - приравнять а.pi к 0 а после просмотреть в a.i все 32 бита
"...в самом начале было слово.." т.е. 16-битное битовое поле.
c++ learner вне форума Ответить с цитированием
Старый 30.11.2010, 19:32   #3
KemanSR
Форумчанин
 
Регистрация: 03.05.2010
Сообщений: 129
По умолчанию

А вот так не проще?
Код:
int* pi = 0;
cout << pi << endl;
KemanSR вне форума Ответить с цитированием
Старый 30.11.2010, 23:03   #4
KemanSR
Форумчанин
 
Регистрация: 03.05.2010
Сообщений: 129
По умолчанию

Ну, человек в тупике, помогите, что не у кого никаких мыслей нет?
KemanSR вне форума Ответить с цитированием
Старый 30.11.2010, 23:21   #5
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

А какая страница по учебнику?
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 30.11.2010, 23:31   #6
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

НУ и что тебе не понятно?
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 30.11.2010, 23:37   #7
KemanSR
Форумчанин
 
Регистрация: 03.05.2010
Сообщений: 129
По умолчанию

Стр. 68.
Непонятен сам вопрос.
Что получить надо?
Вариант 1: Формат адресса "00fd9843..."
Вариант 2: Бинарную строку "0000100101101010101010101010.. ."

Последний раз редактировалось KemanSR; 30.11.2010 в 23:41.
KemanSR вне форума Ответить с цитированием
Старый 30.11.2010, 23:47   #8
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

НУ это короче что-то вроде теста на представление данных! На некоторых машинах Указатели и переменные представляются по разному!
ОТсюда фишка с union! Всё что лежи в union имеют одинаковый адрес!
Отсюда исходя из кода
Код:
struct fudge
{
union
{
int i;
int* pi;
};
};
fudge a;
a.pi = 0;//Вот здесь ты присваиваешь адрес 0
int i = a.i; //исходя из правила a.i должно иметь 0
выведи i и проверь!
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 30.11.2010, 23:54   #9
KemanSR
Форумчанин
 
Регистрация: 03.05.2010
Сообщений: 129
По умолчанию

А что он (Страуструп) имеет ввиду под "... последовательность разрядов...", непонимаю.
KemanSR вне форума Ответить с цитированием
Старый 01.12.2010, 00:19   #10
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

Ну если последовательность разрядов то это скорее всего бинарка!
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Описание и определение по Страуструпу. KemanSR Общие вопросы C/C++ 15 09.01.2011 23:01
Обман ellpascal Свободное общение 47 12.07.2010 09:55
Разработка транслятора. Выходной файл *.COM ИринаForeve Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 5 20.11.2009 15:27
Обман античита SKS Софт 7 06.02.2009 01:08
Оптический обман LepihinMS Свободное общение 1 15.07.2007 14:16