С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

приведение типов указателей - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ signal.h http://www.cyberforum.ru/cpp-beginners/thread807099.html
Доброго времени суток! Начал разбираться с сигналами и понял что как работать с ними под windows мало литературы... так вот, у меня есть код: // showarg.cpp: определяет точку входа для консольного...
C++ Debug assertion failed Во время отладки вылазит такая ошибка,не могу понять в чём дело http://www.cyberforum.ru/cpp-beginners/thread807091.html
C++ Динамический массив с большим количеством элементов
Нужно создать динамический массив (каждый элемент целое положительное число до 10^9), который по введенным данным создавал N элементов массива, где N может быть до 10^5. unsigned long int *arr...
вызов конструктора C++
Здарова! Есть допустим класс: class Str { Str(); Str(Str&); Str(char*); };
C++ Где ошибка? Чтение массива из файла http://www.cyberforum.ru/cpp-beginners/thread807062.html
Пишу программу которая читает вектор и массив из файла. После чего перемножает вектор на массив (получается в итоге вектор). причем отправка на кластеры происходит по столбцам. Но прога да же...
C++ Как такое может быть? (вызов функции-члена без объекта) собственно вопрос озвучен. #include <iostream> using namespace std; class Test { public: void print() { подробнее

Показать сообщение отдельно
Алексей89
31 / 31 / 3
Регистрация: 19.02.2013
Сообщений: 118
15.03.2013, 02:01  [ТС]
ValeryS Большое Человеческое Вам спасибо! Я разобрался

Насколько я понял, битовые поля придумали для компактного хранения баз данных. Если оперативная память не предполагает побитного считывания, то значит должен быть встроенный программный или аппаратный метод компоновки битовых полей, который можно использовать для имитации побитного доступа в байте.
В частности, если обьявить структуру с однобитовыми полями внутри обьединения получаем побитный доступ:
Например:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
struct bits{
unsigned f : 1;
unsigned s : 1;
unsigned t : 1;
unsigned fo: 1;
unsigned fi: 1;
};
union MainUnion
{
unsigned int N;
bits B;
};
 
MainUnion mU;
mU.N=0;
mU.B.t=1;
unsigned int txt=mU.N;
        Memo1->Lines->Add(Now().TimeString()+": "+txt);
Возвращает 4

В то время как:
C++
1
2
3
4
5
6
7
8
9
10
11
nion MainUnion
{
unsigned int N;
bool B[4];
};
 
MainUnion mU;
mU.N=0;
mU.B[2]=1;
unsigned int txt=mU.N;
        Memo1->Lines->Add(Now().TimeString()+": "+txt);
Возвращает 65 536
(Непонятно зачем есть bool, если он по сути char)
Словом, респект всем откликнувшимся
Вопрос закрыт
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.