рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

Объединения.

Объединения. - раздел Информатика, Позволяет пользователю дать новое имя некоторому типу Объединение (Union) – Частный Случай Структуры, Включает Дан...

Объединение (union) – частный случай структуры, включает данные разных типов. Особенность объединения состоит в том, что все поля его располагаются по одному и тому же адресу, т.е. все элементы объединения при размещении в памяти имеют одно и тоже нулевое смещение от начала.

 

Размер объединения равен максимальной из длин его полей.

Описание объединения напоминает описание структуры:

union [имя типа] {описание полей} [список имён] ;

Список имён может содержать имена переменных, указатели,массивы.

Имя типа указывать необязательно,тогда надо указать элемент(ы) в списке имён. Можно указать и то и другое.

Пример.

union ch // ch - имя типа {double x; сhar s[8]; };   union // имени типа нет {double x; сhar s[8]; }q; //переменная q-объединение  

Если введён тип, то можно определять (аналогично структурам):

ch v,w[4]; //переменные, массивы

ch *pch; //указатели

Обращение к элементу объединения:

Имя_объединения . имя_элемента

Указатель на объединение -> имя_элемента

*( Указатель на объединение). имя элемента

 

Примеры: v.x v.s[i] pch->x *(pch).x

Занести значение в объединение можно присвоив его элементу это значение: q.x=1.57E-2;

Назначение объединения-обеспечить возможность доступа к одному и тому же участку памяти с помощью разных типов. Это позволяет, например, задав значение вещественного числа x, посмотреть (и вывести) содержимое его отдельных байтов s[i], и таким образом получить внутреннее представление вещественного x. Для вещественного данного такой доступ к отдельным байтам невозможен.

 

//Внутреннее представление вещественных данных

#include <iostream>

#include <iomanip>

using namespace std;

 

typedef double tip; // рассматриваемый тип обозначим tip

const int L=sizeof(tip); // размер типа в байтах

union {

tip a;

unsigned char u[L];

}q; // q- включает вещ.данное и массив

//байтов размера, равного размеру типа tip

// здесь необходимо учитывать, что значение a в памяти хранится

//в перевёрнутом виде: от младшего байта к старшему,

//внутренность байта не переворачивается.

//Байты строки u в памяти хранятся в порядке u[0],u[1],…u[L-1]

//т.е. u[0]наложится на младший байт a,…u[L-1] на старший байт

//a, поэтому вывод надо начинать с u[L-1], затем u[L-2],… ,u[0], либо строку S формировать с конца.

 

void binkod (tip n, char s[])

{//функция формирует строку s с двоичным представлением //вещественного данного n.

– Конец работы –

Эта тема принадлежит разделу:

Позволяет пользователю дать новое имя некоторому типу

Замечание typedef и define... typedef позволяет пользователю дать новое имя некоторому типу... typedef тип новое имя размерность...

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Объединения.

Что будем делать с полученным материалом:

Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Все темы данного раздела:

Представление вещественных чисел в памяти ПК
В дальнейшем будем рассматривать тип double Пример. X=3.5 = 11.12 = (-1)0 *1.11*21 P’=P+1023 P’ = 1+1023 =1024

Достоинства формы представления чисел с плавающей точкой.
· Сравнительно широкий диапазон чисел; · Хранение только значащих цифр числа. Представление обеспечивает для числа максимальную точность при фиксированной разрядной сетке.

Bool p;
char t [Q<<3 +1]; cout<< "n int--n "; cin>> n; cout<< "n double--u "

Cout.precision(8);
q.a=-3.5; cout.fill('0'); for(int i=7;i>=0;i--) cout<<hex<<setw(2)<<int(q.u[i])<<' '

Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • Популярное
  • Облако тегов
  • Здесь
  • Временно
  • Пусто
Теги