Форум программистов, компьютерный форум CyberForum.ru

уточнение по Объеденениям - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Сколько кактусов девочка не успела побрить? http://www.cyberforum.ru/cpp-beginners/thread653793.html
Мама развела оранжерею кактусов, некоторые из них были колючие, а некоторые - нет. Маленькая дочь Алина решила, что иглы на кактусах - это слишком вызывающе, и поэтому тщательно побрила их бритвой. Хорошо, что у мамы остался блокнот, в котором все кактусы были обозначены количеством иголок: а1, а2, ..., ан. (Голые кактусы были обозначены 0). Сколько кактусов девочка не успела побрить? Помогите...
C++ Считывание строки из файла Пишу что-то типа простой авторизации на c++, нужно взять из файла определенную строку ( там пароли хранятся ) и сравнить с введенной. Как правильно и проще всего взять определенную строку из файла? http://www.cyberforum.ru/cpp-beginners/thread653788.html
C++ Как сделать задержку?
Почему после запуска программа сразу же закрывается? #include <iostream> #include <locale.h> #include <string> #include <conio.h> using namespace std;
C++ Задача: конвертация из одной системы счисления в другую
Описание Имеются 2 цифры в разных системах счисления, цель задачи найти, в каких системах счисления 2 цифры равны. Например, 12 и 5, в десятичной системе счисления они не равны, но 12 в 3-чной системе счисления и 5 в 6-чной или десятичной системе счисления равны между собой. Input Вводятся два числа M и N ( которые в десятичной системе не превышают 1000000000), системы счисления...
C++ friend function http://www.cyberforum.ru/cpp-beginners/thread653735.html
Помогите плз разобраться: Когда я делаю инкремент "х" через закрытые функции класса - все работает нормально, а когда через функцию-друга, то он просто не увеличивает. =( header-file #ifndef TRAIN #define TRAIN #include <iostream> #include <cstring>
C++ Массивы подсчёт max и min от rand До меня никак не доходит всё что ниже строчки min_value = list(зачем присваем именно первый элемент массива, зачем делаем вот это:if(min_value > list) min_value = list; ); Объясните мне пожалуйста #include <iostream> #include <cstdlib> using namespace std; int main() { setlocale(LC_ALL,"Russian"); int i, min_value, max_value; подробнее

Показать сообщение отдельно
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
18.09.2012, 12:49     уточнение по Объеденениям
Вы видать не до конца поняли структуру объединений.
Предположим, мы объявили такое объединение:
C++
1
2
3
4
union myUnion {
   unsigned int a;            //предположим, что int на используемой платформе 4 байта
   unsigned short int b;   //предположим, что short int на используемой платформе 2 байта
};
Объекты данного объединения будут иметь одно поле размером 4 байта.
Попробуем теперь создать объект данного объединения и присвоим полю с именем a значение 32768.
C++
1
2
3
4
5
myUnion obj;
 
obj.a = 32768;
 
std::cout << obj.a << ' ' << obj.b << std::endl; // тут у нас выведется 32768 32768
В данном случае поле будет выглядеть в двоичном представлении так:
0000 0000 0000 0000 1000 0000 0000 0000

Теперь присвоим полю с именем a значение:

C++
1
2
3
obj.a = 65536;
 
std::cout << obj.a << ' ' << obj.b << std::endl; // тут у нас выведется 65536 0
В данном случае поле будет выглядеть в двоичном представлении так:
0000 0000 0000 0001 0000 0000 0000 0000

Ну а теперь присвоим полю с именем a значение 98304:
C++
1
2
3
obj.a = 65536;
 
std::cout << obj.a << ' ' << obj.b << std::endl; // тут у нас выведется 98304 32768
В данном случае поле будет выглядеть в двоичном представлении так:
0000 0000 0000 0001 1000 0000 0000 0000

Теперь объяснение: размер поля объектов объединений равен максимальному размеру из объявленных в нем типов, и все объекты его разделяют. Для представленного мной объединения в качестве примера, получается вот такая схемка.
Код
                     __________________
                    |unsigned short int|
0000 0000 0000 0001 1000 0000 0000 0000
|______________________________________|
            unsigned int
 
Текущее время: 23:11. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru