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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
den_95
0 / 0 / 0
Регистрация: 24.05.2013
Сообщений: 4
#1

Объединение (union), объяснить выведенное значение - C++

24.05.2013, 22:00. Просмотров 340. Ответов 7
Метки нет (Все метки)

Здравствуйте. При вызове обработчика выдаются значения переменных a,b,c, но когда я удаляю строку data.c = -3; вместо с выдается число 1084709929. Мне нужно объяснить откуда оно берется или как вычисляется, знаю только что оно не случайно и каким-то образом зависит от типа данных переменной с, типа данных переменной b и самой b. Заранее спасибо.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
typedef union { short a; float b; long c;} DataStr1;
 
void __fastcall TForm1::Button3Click(TObject *Sender)
{
   DataStr1 data;
   data.a = 2;
   ShowMessage(IntToStr(data.a));
   data.b = 5.23;
   ShowMessage(FloatToStr(data.b));
//   data.c = -3;
   ShowMessage(IntToStr(data.c));
   ShowMessage(IntToStr(data.a));
   ShowMessage(FloatToStr(data.b));
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.05.2013, 22:00
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Объединение (union), объяснить выведенное значение (C++):

Объединение нескольких массивов в одну область памяти Union и прямое обращение по имени - C++
Нужно чтобы массив s пересекался в памяти с массивами u1,u2,u3 и чтобы к ним был прямой доступ по имени. Первое я реализовал: union ons {...

Объединение (union) "Ученик" - C++
Имеется информация об учениках младшей школы. Для всех учеников известны: фамилия, имя и класс. Для учеников 1-х классов дополнительно...

Стартовое значение union - C++
Если просто int, то можно int x=20;. А как быть с юньюном, например, _LARGE_INTEGER? Предположим, я хочу декларировать, что стартовое...

Вычислить средний балл оценок каждого студента и напечатать их фамилии и средний балл (объединение (union)) - C++
Дан список студентов. Общие поля: Ф.И.О., дата рождения, группа, средний балл. Вычислить средний балл оценок каждого студента и напечатать...

Как записать все выведенное на экран в файл? - C++
Здраствуйте,подскажите,можно ли сделать так,чтобы все выведенное на экран в С++ в формате dos записать в файл,желательно текстовый...

Объяснить значение строки в программе - C++
Вот прога. В чем суть: в строке for( j = 2; j <= i && (i % j); j++); -------- часть " (i % j)" отвечает за то, что бы число делилось...

7
Кудаив
329 / 406 / 24
Регистрация: 27.05.2012
Сообщений: 1,168
Завершенные тесты: 2
24.05.2013, 22:03 #2
про юнионы читал в инете?
0
den_95
0 / 0 / 0
Регистрация: 24.05.2013
Сообщений: 4
24.05.2013, 22:04  [ТС] #3
да, но по данной теме ничего не смог найти
0
Кудаив
329 / 406 / 24
Регистрация: 27.05.2012
Сообщений: 1,168
Завершенные тесты: 2
24.05.2013, 22:18 #4
в union инициализировано единовременно может быть только одно поле
0
den_95
0 / 0 / 0
Регистрация: 24.05.2013
Сообщений: 4
24.05.2013, 22:22  [ТС] #5
про это я знаю, мне нужно объяснить откуда взялось полученное значение
0
Кудаив
329 / 406 / 24
Регистрация: 27.05.2012
Сообщений: 1,168
Завершенные тесты: 2
24.05.2013, 22:25 #6
вернее то что лежит во втором поле интерпретируется по правилам третьего поля и выводится
1
den_95
0 / 0 / 0
Регистрация: 24.05.2013
Сообщений: 4
24.05.2013, 22:30  [ТС] #7
спасибо огромное!
0
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,926
Записей в блоге: 1
25.05.2013, 05:38 #8
Цитата Сообщение от Кудаив Посмотреть сообщение
в union инициализировано единовременно может быть только одно поле
что за бред?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.05.2013, 05:38
Привет! Вот еще темы с ответами:

Объяснить почему переменная принимает данное значение - C++
int v = 5; int a = 0; a = ++v + 10 + 1 + ++v * 2; cout << "a = " << a << endl; кто сможет объяснить, почему здесь а = 32 ? :)....

Не могу объяснить, откуда получается именно такое значение - C++
#include "stdafx.h" #include "conio.h" int _tmain(int argc, _TCHAR* argv) { unsigned char j=256; int g=~j; ...

Объяснить почему sizeof(arr) всегда возвращает одно и то же значение - C++
Начал изучать динамические массивы. Какое бы n я ни вводил, всегда создается массив из 4 элементов. Что я упустил? #include...

Union - C++
Здравствуйте! Я уже задавал тут вопрос, как использовать union, и сейчас столкнулся с проблемой: Есть 3 файла и заголовочный файл -...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Yandex
Объявления
25.05.2013, 05:38
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru