Форум программистов «Весельчак У»
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
Начало
Наши сайты
Галерея
Весельчак У
Наша Вики
Хранилище
Проекты
Правила
Правила форума
Правила русского языка
Помощь
Поиск
Календарь
Почта
Войти
Регистрация
Форум программистов «Весельчак У»
>
Учимся программировать
>
Начинающим
(Модератор:
Sla
) > Тема:
[C++] union
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: [C++] union (Прочитано 11504 раз)
0 Пользователей и 4 Гостей смотрят эту тему.
The Nameless One
Помогающий
Offline
Пол:
[C++] union
«
:
19-12-2009 10:05 »
Привет)
Для меня возможность использовать объединения - высший пилотаж. Как можно научиться этому?
Скорее всего, я не до конца понимаю - как можно получить полезные данные из одного и того же набора единиц и нулей, если только интерпретировать их как разные типы?
Записан
Finch
Спокойный
Администратор
Offline
Пол:
Пролетал мимо
Re: [C++] union
«
Ответ #1 :
19-12-2009 10:10 »
The Nameless One
, А можно поподробнее и в примерах, что ты именно не понимаеш?
Записан
Не будите спашяго дракона.
Джаффар (Коша)
Sla
Модератор
Offline
Пол:
Re: [C++] union
«
Ответ #2 :
19-12-2009 10:15 »
Та легко.
есть ячейка памяти
в ней лежит, например 0х60
В ней будет лежать 0х60 все время.
Но в некоторых случаях тебе эта ячейка нужна как символ, а в некоторых как число.
Можно применить функции преобразования.
Но ведь можно и применить union - нужен символ, то обращаешься как к символу, нужно число - обращаешься как к числу.
Записан
Мы все учились понемногу... Чему-нибудь и как-нибудь.
The Nameless One
Помогающий
Offline
Пол:
Re: [C++] union
«
Ответ #3 :
19-12-2009 10:28 »
Sla
, просто не понятно, как поступают в более сложных случаях - когда объединяют целые структуры? Это получается, нужно заранее на самом низком уровне просчитать, чтобы эти структуры всегда выдавали осмысленный набор данных:)
Finch
,
Ну, например, имеет ли смысл это:
Код:
union
{
int i;
bool b;
};
Это объединение будет занимать 32 бита в памяти - если в i число 12 - то как будет интерпретироваться b?, к примеру?
Записан
Finch
Спокойный
Администратор
Offline
Пол:
Пролетал мимо
Re: [C++] union
«
Ответ #4 :
19-12-2009 10:35 »
Тип bool всегда интерпретируется как true если значение отлично от нуля. Если значение 0 то это всегда false. Поэтому всегда рекомендуют проверять на false, а не на true. У этого правила есть небольшое исключение. Программа возврашает 0, если она выполнилась успешно. Иначе, возврашается код ошибки выполнения.
Записан
Не будите спашяго дракона.
Джаффар (Коша)
The Nameless One
Помогающий
Offline
Пол:
Re: [C++] union
«
Ответ #5 :
19-12-2009 10:37 »
Finch
, ясно:)
Записан
Sla
Модератор
Offline
Пол:
Re: [C++] union
«
Ответ #6 :
19-12-2009 11:22 »
The Nameless One
, ты привел замечательный пример.
i занимает 32 разряда
b занимает 16 разрядов
Нужно узнать есть ли единицы в младших 16 раpрядах i.
Записан
Мы все учились понемногу... Чему-нибудь и как-нибудь.
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Форум программистов «Весельчак У»
>
Учимся программировать
>
Начинающим
(Модератор:
Sla
) > Тема:
[C++] union
Загружается...