Аватар для VintProg
7 / 7 / 0
Регистрация: 24.06.2009
Сообщений: 44

Union что из себя представляет?

27.08.2010, 11:33. Показов 36844. Ответов 52
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Читал много книг и там про него не чего не было сказано, парни объясните мне пожалуйста для чего он?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.08.2010, 11:33
Ответы с готовыми решениями:

Что из себя представляет std::wstring?
В общем насколько я понимаю это string с типом wchar_t. Но есть вопросы: 1. Размер типа wchar_t зависит от компилятора и не...

Что из себя представляет допустим поток ввода/вывода
Поясните пожалуйста что из себя представляет допустим поток ввода/вывода в С++ ? Это участок памяти который представляет собой что-то вроде...

Что из себя представляет код в стеке, и как его использовать
Гугл мне по этому поводу не помог, поэтому спрашиваю тут: что из себя представляет из себя код в стеке, как его использовать(вызвать там и...

52
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,038
Записей в блоге: 1
22.06.2016, 15:44
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Evg Посмотреть сообщение
В ней правда не хватает одного полезного совета. При использовании gcc в более-менее сложном проекте опция -fno-strict-aliasing помогает избавиться от головной боли
Там написано, что это детский сад:
Детсадовский метод, это отключить проклятый strict aliasing совсем ключиком -fno-strict-aliasing.
0
Модератор
 Аватар для vxg
3410 / 2182 / 354
Регистрация: 13.01.2012
Сообщений: 8,473
22.06.2016, 15:50
Цитата Сообщение от Croessmah Посмотреть сообщение
детский сад
а почему?
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,038
Записей в блоге: 1
22.06.2016, 15:53
Цитата Сообщение от vxg Посмотреть сообщение
а почему?
Наверное, потому что легко и
Цитата Сообщение от Evg Посмотреть сообщение
ценой небольшой потери производительности
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
22.06.2016, 15:58
Цитата Сообщение от Croessmah Посмотреть сообщение
Там написано
Там есть места такие, что зачитаешься:
Почувствуй себя компилятором, подумай мальца за него: не бежит ли лиса, не летит ли орел, не ломается ли алиасинг.
А о компиляторах и ключах компиляции:
6.1. Компиляторы врут, ворнинги ненадежны, -Wall иногда работает (надо включать!), но гарантий не дает.
Ну то есть : "А буде кто с ключом к нам придёт, - от ключа и погибнет."
Оптимистическая трагедия. Я то считал, что объект это не только участок памяти специальным образом размеченный, а это и способ интерпретации участка памяти, который не сном ни духом о том не ведает. Ан-нет. Компилятор в борьбе за скорость продаст и не крякнет. Остаётся, как сказано в статье - пост, молитва и низко калорийная диета с обилием песнопений и полиненасыщенных жирных кислот.
1
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21285 / 8310 / 637
Регистрация: 30.03.2009
Сообщений: 22,670
Записей в блоге: 30
22.06.2016, 16:08
Тут в общем-то дело не в компиляторе, а в языке. В погоне за производительностью в стандарте осталось слишком много всяких UB. Поэтому программируя на Си или Си++ людям приходится так или иначе понимать много разных тонкостей, включая особенности работы компилятора
0
19505 / 10108 / 2463
Регистрация: 30.01.2014
Сообщений: 17,828
22.06.2016, 16:30
Цитата Сообщение от vxg Посмотреть сообщение
а почему?
Я думаю это продиктовано тем, что если разработчик вместо того, чтобы попытаться решить проблему грамотно, сразу подсовывает костыли, то он еще незрелый разработчик, разработчик-ребенок.
0
Модератор
 Аватар для vxg
3410 / 2182 / 354
Регистрация: 13.01.2012
Сообщений: 8,473
22.06.2016, 16:43
DrOffset, хорошо что я сижу там где нет всей этой зауми
0
859 / 448 / 112
Регистрация: 06.07.2013
Сообщений: 1,491
22.06.2016, 18:53
что то я не пойму, зачем Union тогда нужен вообще, если запись в одно поле, а затем чтение из другого - это UB.

как поступить тогда тут? если мне нужно взять например rgba[0] от col
C++
1
2
3
4
5
union Color
{
unsigned long col;
unsigned char rgba[4];
}
0
Модератор
 Аватар для vxg
3410 / 2182 / 354
Регистрация: 13.01.2012
Сообщений: 8,473
22.06.2016, 19:13
Raali, вроде как если делать транзит через промежуточную переменную убердерьмо не случится
2
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
22.06.2016, 20:21
Цитата Сообщение от Raali Посмотреть сообщение
зачем Union тогда нужен вообще
Для экономии памяти.
Можно хранить тот или иной объект. Но в текущий момент или тот или иной.

Компилятор + AI = страшная сила:
***
"Пускай детишки закричат во снах,
В которые ворвётся этот страх:
Strict aliasing'а ужасный вид,
Кровь компилятора оледенит..."
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
22.06.2016, 20:37
Цитата Сообщение от IGPIGP Посмотреть сообщение
Там выше я давал ссылку на обсуждение strict alliasing при наличии двух разнотипных указателей на один и тот же объект участок памяти. Там приводится пример из хабра:
https://habrahabr.ru/post/114117/
Это уже не актуально с GCC 5.3.0.
1
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
22.06.2016, 21:30
Цитата Сообщение от castaway Посмотреть сообщение
Это уже не актуально с GCC 5.3.0.
castaway, как я понял тема о UB, стандарте и strict aliasing rules. Стандарт определяет условия и гарантии компиляторов. И это достаточно принципиальный вопрос безотносительно конкретного компилятора.
Как тут уже неоднократно и разнообразно прозвучало, данное UB не проявляется на большинстве актуальных компиляторов. И данное UB - нежелательная вещь как потенциально возможное явление в будущих версиях компиляторов и при портировании, например. То есть актуальность или неактуальность для конкретной реализации - полезная инфа, но принципиального значения не имеет. Сама констатация разрушительности ураганной силы применяемых оптимизаций, это достаточно пикантный факт. Факт есть факт и это надо принять.
А выводы - вопрос конкретного разработчика в конкретных условиях.
1
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21285 / 8310 / 637
Регистрация: 30.03.2009
Сообщений: 22,670
Записей в блоге: 30
24.06.2016, 17:09
Цитата Сообщение от Raali Посмотреть сообщение
что то я не пойму, зачем Union тогда нужен вообще, если запись в одно поле, а затем чтение из другого - это UB
Для того, чтобы писать в поле 1, потом читать из поля 1, затем писать в поле 2, потом читать из поля 2 и т.п. Думается, именно такой смысл в union вкладывали отцы-основатели. А жизненные потребности оказались шире
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.06.2016, 17:09

Что из себя представляет CMS
Доброго времени суток! Учу Web только полтора месяца, заметил что очень часто фигирирует аббревиатура CMS. Пытался...

Что из себя представляет WordPress?
WordPress - это программа (отдельный процесс на сервере), или это просто сборка скриптов, которая работает под управлением интерпретатора...

Что представляет из себя WikiLeaks?
Портал существует с декабря 2006 года и уже успел вызвать большой резонанс. Авторы сайта (Джулиан Ассанж и команда) заявляют свое...

Что из себя представляет ковариация?
Объясните пожалуйста наглядно, что из себя представляем ковариация и коэффициент корреляции. Добавляю картинку, на которой сделал...

что из себя представляет криптография ?
я понимаю, что шифрует файлы, обеспечивая защиту(поправьте меня если что), но собственно в примерах и подробностях "Где? Для...


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

Или воспользуйтесь поиском по форуму:
53
Ответ Создать тему
Опции темы

Новые блоги и статьи
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru