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

Смысл обьединений - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вывести всю информацию о предприятии (РНН,БИН и т.д.) http://www.cyberforum.ru/cpp-beginners/thread890207.html
такой вопрос: надо написать скрипт или экзешник,без разницы,на каком языке тоже,чтобы он выдавал всю информацию о предприятии(РНН,БИН и т.д.). Как удобнее это сделать? Прошу учесть что я не имею...
C++ Получить в порядке возрастания N первых натуральных чисел, которые не делятся ни на какие простые числа, кроме 2, 3 и 5 Дано натуральное число N. Получить в порядке возрастания N первых натуральных чисел, которые не делятся ни на какие простые числа, кроме 2, 3 и 5. #include <iostream> #include <conio.h>... http://www.cyberforum.ru/cpp-beginners/thread890206.html
C++ требуется переделать со структурами
помогите когда сдавал программу препод сказал чтоб переделал со структурами... //лаба 12_1 вариант 9 #include <stdio.h> #include <conio.h> #include <string.h> #include <clocale> #include...
C++ Переместить элементы массива
Добрый день, форумчане. Помогите пожалуйста написать программу. Переместить элементы массива вправо на m позиций, при этом m элементов из конца массива перемещаются в начало.
C++ Ошибка (правильность написания логических операций) http://www.cyberforum.ru/cpp-beginners/thread890166.html
/--------------------------------------------------------------------------- #include <iostream> //#include <vcl.h> #pragma hdrstop #include <stdio.h> #include <string.h>...
C++ Написать функцию умножения двух,заданных с клавиатуры чисел, используя только операцию умножения и рекурсию Помогите пожалуйста с рекурсией Написать функцию умножения двух,заданных с клавиатуры чисел, используя только операцию умножения и рекурсию. Спасибо. подробнее

Показать сообщение отдельно
ninja2
231 / 187 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
04.06.2013, 11:18
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <iostream>
using std::cout;
using std::endl;
 
int main()
{
    union unio
    {
        int a;
        char ch;//символ
        double doub;
    };
 
    unio u;
    u.a=3;
    cout <<sizeof(u)<<' '<<sizeof(unio)<<endl;//8 8;
    //в char ch будет неопределенное значение и в double левое какоето
    cout <<u.a<<' '<<u.ch<<' '<<u.doub<<endl;//3 тут левое пойдет
 
    u.ch='k';
    cout <<sizeof(u)<<endl;//8
    //тут уже a и doub будут неопределены левые значения
    cout <<u.a<<' '<<u.ch<<' '<<u.doub<<endl;//фигню k фигню
    //оно может вывести и не фигню старое значение a,
    //но оно как бы не фиксируется, для программы пропадает
 
    u.doub=33434.55;
    cout <<sizeof(u)<<endl;//8
    cout <<u.a<<' '<<u.ch<<' '<<u.doub<<endl;//фигня, фигня, 33434.55
 
 
    return 0;
}
Объединение это такая структура, которая занимает в памяти место максимального своего элемента. И может быть инициализирована только одним каким небуть своим членом. Оно из Си пришло в С++, вроде как бы его советуют не использовать, я точно не помню.

А используется наверно для экономии памяти, от если посмотреть код вверху, то нам бы нужно было б создать 3 переменные char, int, и double, а это больше памяти чем мы просто создали одну union с этими тремя типами, ее размер 8мб, char и int как бы в нее входят. А так если будет типов 20, то память с экономится. Это я так придумал как использовать . Просто видно из поведения, что именно для этого его используют.
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru