Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.64/180: Рейтинг темы: голосов - 180, средняя оценка - 4.64
 Аватар для VintProg
7 / 7 / 0
Регистрация: 24.06.2009
Сообщений: 44

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

27.08.2010, 11:33. Показов 36687. Ответов 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,469
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
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
22.06.2016, 16:08
Тут в общем-то дело не в компиляторе, а в языке. В погоне за производительностью в стандарте осталось слишком много всяких UB. Поэтому программируя на Си или Си++ людям приходится так или иначе понимать много разных тонкостей, включая особенности работы компилятора
0
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
22.06.2016, 16:30
Цитата Сообщение от vxg Посмотреть сообщение
а почему?
Я думаю это продиктовано тем, что если разработчик вместо того, чтобы попытаться решить проблему грамотно, сразу подсовывает костыли, то он еще незрелый разработчик, разработчик-ребенок.
0
Модератор
 Аватар для vxg
3410 / 2182 / 354
Регистрация: 13.01.2012
Сообщений: 8,469
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,469
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
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась. Первый вариант. . .
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2. Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет. Но обычно это 50 лет и более. Наверное, закисление почвы происходит сезонно в средней. . .
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи. Через несколько переработок от PHP кода к C89 (надеюсь, 89). Но довольно запутанно получилось. Код для Linux. Но если убрать time и то, что с ним. . .
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
rest api anylogic - выполнение модели на своём русском сайте
anaschu 02.07.2026
Как подружиться с AnyLogic Cloud API, победить провайдеров и развернуться Java-бэкенд в Docker на бесплатном хостинге: Двухдневный лог борьбы Всем привет! Хочу поделиться свежим (и довольно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru