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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.07.2016, 12:17   #81
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Причем тут результат? UB означает, что по стандарту так нельзя и этот код может работать так как вы ожидали не во всех компиляторах, вариантах настройки компилятора и т.п.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 06.07.2016, 12:18   #82
Croessmah
Вредный кошак
Участник клуба
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Сообщений: 1,159
По умолчанию

Цитата:
для особо непонятливых даже результат выложил.
Особо не понятливые, думаю не стоит упоминать о ком я,
не смогли даже выводы сделать из этого результата
Цитата:
и че ? мне это тест и без вашего сказал.
Вы его не правильно поняли...
возьмите случай получше.
Код:
#include <iostream>
#include <iomanip>

using uchar = unsigned char;


struct Bytes{
    uchar byte0;
    uchar byte1;
    uchar byte2;
    uchar byte3;
};

union Test{
    uint32_t value;
    Bytes bytes;
};


int main()
{
    Test t;
    t.bytes.byte0 = 0;
    t.bytes.byte1 = 0;
    t.bytes.byte2 = 0;
    t.bytes.byte3 = 0;
    t.value = 0xFFAA8855;
    std::cout << std::hex << "value: " << t.value << std::endl;
    std::cout << std::hex << "bytes: " 
        << (int)t.bytes.byte3 
        << (int)t.bytes.byte2 
        << (int)t.bytes.byte1 
        << (int)t.bytes.byte0 
        << std::endl;
}//Это весьма популярный способ разделения, например, RGBA на составляющие, но это UB
http://rextester.com/JUA71138
Croessmah вне форума Ответить с цитированием
Старый 06.07.2016, 12:20   #83
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

обьединение тут подразумевает - обьединение памяти переменных.

если тип дабл 8 байт а инт 4 байта - то все равно эта структура

занимает 8 байт а не 12 как в классе.

я еще раз повторяю анион это парадигма взятая с си.

к с++11 она пришла своим ходом
RAFA91 вне форума Ответить с цитированием
Старый 06.07.2016, 12:23   #84
Croessmah
Вредный кошак
Участник клуба
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Сообщений: 1,159
По умолчанию

Цитата:
к с++11 она пришла своим ходом
Она была в c++ с самого зарождения языка,
т.е. еще даже до первого стандарта.
Croessmah вне форума Ответить с цитированием
Старый 06.07.2016, 12:23   #85
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
я еще раз повторяю анион это парадигма взятая с си.
к с++11 она пришла своим ходом
для особо непонятливых открою тайну что С++ вырос из С.
и сам union к С++11 не имеет отношения, в С++11 его лишь расширили.

не пытайтесь состроить хорошую мину при плохой игре.

вы сами начали спрашивать что такое union.
этого с форума уже не удалишь.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 06.07.2016 в 12:25.
Пепел Феникса вне форума Ответить с цитированием
Старый 06.07.2016, 12:25   #86
Croessmah
Вредный кошак
Участник клуба
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Сообщений: 1,159
По умолчанию

Цитата:
не пытайтесь состроить хорошую мину при плохой игре.
Ну хоть какое-то веселье, хотя уже надоедает, если честно
Croessmah вне форума Ответить с цитированием
Старый 06.07.2016, 12:28   #87
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

вот еще одно доказательство этого обьединения.

парадигма анион была в си и об этом твердят все источники.

потом переплыла в ++ . так что это не расширение 11

_____________

собственно доказательство работы этой парадигмы си

Код:
union A
{
	int a;
	double b;
};

int main() 
{
	A a;
	
cout<<""<<&a<<endl;
cout<<"a = "<<&a.a<<endl;
cout<<"a = "<<&a.b<<endl;

cout<<"sizeof = "<<sizeof(A)<<endl;
	return 0;
}
0xbf9d9198
a = 0xbf9d9198
a = 0xbf9d9198
sizeof = 8
RAFA91 вне форума Ответить с цитированием
Старый 06.07.2016, 12:29   #88
Croessmah
Вредный кошак
Участник клуба
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Сообщений: 1,159
По умолчанию

Цитата:
собственно доказательство работы этой парадигмы си
и ниже код на c++ ой не могу, заберите меня из пАд стАла
Цитата:
так что это не расширение 11
Еще раз, специально для гуру и эксперта в области C и C++:
Цитата:
Сообщение от Croessmah
Она была в c++ с самого зарождения языка,
Цитата:
Сообщение от Пепел Феникса
открою тайну что С++ вырос из С.
Цитата:
Сообщение от Пепел Феникса
в С++11 его лишь расширили.

Последний раз редактировалось Croessmah; 06.07.2016 в 12:32.
Croessmah вне форума Ответить с цитированием
Старый 06.07.2016, 12:30   #89
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

с анион разобрались. ниче в ней сложного нету.

это тупо слияние адресов. так и запишем в книге.
RAFA91 вне форума Ответить с цитированием
Старый 06.07.2016, 12:32   #90
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
была в си и об этом твердят все источники.
Вы сами с собой общаетесь? Тут только вы и говорили, что union не было до С++11.

И это никак не относится к тому, что в том коде UB.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Стандартные средства = бесконечный полет фантазии. Alex Cones Софт 2 27.07.2009 17:10
Мои статьи про работу программистов Юлия_shell Обсуждение статей 2 27.04.2009 18:41