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

Union что из себя представляет? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Скрипт для автоматизации забивания инфы http://www.cyberforum.ru/cpp-beginners/thread161901.html
Есть такая проблема.... Имеется сайт......на нём есть какталог товаров.....забивается каталог через админку.... знач вводятся следующие поля ... наименования товара.... описание ..... цена..... нужно сделать небольшую программку которая бы брала екселевский документ( с информацией ) и автоматически бы забивала сама на сайт.... возможно ли это???? и если да то как??? выбрал с++ так как с...
C++ Как установить весь MinGW? Собственно сабж. Дома у меня Линукс и проблем не возникает. А на работе винда. Я использую Эклипсу с МинГВином, но нехватает Autoconf. Сабжевый инсталятор тянет только базовую систему. Выкачивать пакеты по одному удовлетворяя зависимости довольно долго. Непонятно... http://www.cyberforum.ru/cpp-beginners/thread161835.html
Сравнение элементов массива C++
Доброе время суток. У меня такой вопрос. Как сравнить элементы массива,допустим массив состоит из пяти элентов???
C++ Статические поля класса
class mi { int a,b; public: mi(int a, int b) : a(a),b(b) {} void sw() { std::cout<<a<<" - "<<b<<std::endl; } static int pa = 9; }; мне нужно сделать переменную в классе статическую и публичную. но как я понял это возможно сделать только внутри какойто функции? а просто как у меня в коде нельзя?
C++ Советы http://www.cyberforum.ru/cpp-beginners/thread161822.html
Добрый день, сделал с горем пополам калькулятор, но необходимы советы о написании программ на примере того же калькулятора, так как было довольно заморочливо его делать и программа похожа на if-then лестницу с отслеживанием кучи зависимости 1. как правильно проектировать программу(с помощью какого-то псевдокода или еще чего)? 2. как правильно подходить к решения вариантов хода событий(сначала...
C++ Уникальные массивы Здравствуйте, подскажите пожалуйста как на С реализовывается уникальность массивов. Чтобы в массив попадали только те элементы, которые являются уникальными. Чтобы читая файл на выходе можно было распечатать на экран только неповторяющиеся элементы. Заранее спасибо! подробнее

Показать сообщение отдельно
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16935 / 5340 / 328
Регистрация: 30.03.2009
Сообщений: 14,354
Записей в блоге: 26
22.06.2016, 09:59     Union что из себя представляет?
Цитата Сообщение от IGPIGP Посмотреть сообщение
Компиляторы уверены, что что два разных объекта не могут иметь один и тот же адрес
Дело тут не в объектах. Пока внутри одной функции строятся обращения к разным полям одного и того же union'а, даже плохой компилятор постфактум в этом разберётся и ничего не напортачит. В реальности всё это вертится вокруг взятия адреса на поля union'а. В примере типа

C
int foo (int *p1, float *p2)
{
  *p2 = 0.0f;
  return *p1;
}
имеем обращения по двум указателям: запись по указателю p2 и чтение по указателю p1. Опираясь на Strict aliasing rules компилятор вправе переставить местами операции чтения и записи в память, т.к. эти самые strict aliasing rules говорят о том, что обращения по указателям типа int* и float* обязаны иметь непересекающиеся адреса (т.е. независимые обращения) и следить за этим должен программист. Другими словами, если построить вызов функции

C
union { int i; float f; } u;
int i;
...
u.i = 0x11111111;
i = foo (&u.i, &u.f);
то нет никакой гарантии, что в i будет записано нулевое значение, потому что внутри функции foo компилятор может переставить местами чтение из p1 (т.е. из поля u.i) и запись в p2 (т.е. в поле u.f). Это именно с точки зрения стандарта. Хотя постфактум на современных компиляторах данный код отработает именно так, что в i будет записан 0
 
Текущее время: 01:26. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru