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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
seravr
1 / 1 / 0
Регистрация: 11.11.2008
Сообщений: 34
#1

Ошибка error C2070: 'unsigned int': illegal sizeof operand - C++

06.01.2009, 02:02. Просмотров 1138. Ответов 4
Метки нет (Все метки)

Собственно, есть пара вопросов (смотреть в комментариях). Помогите разобраться пожалуйста

Заранее спасибо Всем

Пример части кода:

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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#include<iostream>
 
using std::cin;
using std::cout;
using std::endl;
using std::hex;
using std::dec;
 
#pragma pack(2)
 
void typeOutDWORD(const DWORD name);
void typeOutHexDWORD(const DWORD name);
 
union DWORD  
{
    unsigned long word;
    struct BYTE
    {
        unsigned lowBit:16;
        unsigned HighBit:16;
    } byte;
};
 
int main ()
{
    DWORD Name;
 
    cout<<"Size DWORD="<<sizeof(DWORD)<<endl;    //выводит Size DWORD=4
    cout<<"Size word="<<sizeof(Name.word)<<endl; //выводит Size word==4
    cout<<"Size byte"<<sizeof(Name.byte)<<endl;  //выводит Size byte=4
 
//  Вопрос №1:
 
//  если я хочу узнать размер Name.byte.lowBit || Name.byte.HighBit путем
 
//  cout<<"Size byte"<<sizeof(bmpName.byte.HighBit)<<endl
 
//  cout<<"Size byte"<<sizeof(bmpName.byte.lowBit)<<endl
 
// VS2008  пишет: error C2070: 'unsigned int': illegal sizeof operand
// собственно, прошу помочь разобраться в ошибке и понять, как правильно мне // определить размер элемента структуры объединения
 
// Вопрос №2:
 
// заполняю поля структуры
bmpName.byte.HighBit='B';
bmpName.byte.lowBit='M';
 
 
typeOutDWORD(bmpName);// выводит BM
cout<<endl;
typeOutHexDWORD(bmpName);// выводит 424d
 
// но если я хочу сразу вывести содержимое путем
 
cout<<bmpName.word<<endl; 
 
// выводит 42004d подскажите почему? Так должно быть?
// Как мне вывести просто 424d? Откуда беруться нули?
 
return 0;
}
 
// функция вывода на экран содержимого DWORD в формате 0xff
void typeOutHexDWORD(const DWORD name)
{
    cout<<hex<<name.byte.HighBit
        <<name.byte.lowBit<<"\n";
}
 
 
// функция вывода на экран содержимого DWORD в формате ASCII
void typeOutDWORD(const DWORD name)
{
    cout.put(name.byte.HighBit);
    cout.put(name.byte.lowBit);
}
Добавлено через 3 минуты 50 секунд
Извините, ошибочку сделал, в коде вместо bmpName должно просто Name(не могу редактировать сообщение)
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.01.2009, 02:02
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ошибка error C2070: 'unsigned int': illegal sizeof operand (C++):

Ошибка при компиляции error: cannot convert ‘int (*)[5]’ to ‘int**’ for argument ‘1’ to ‘void Replase(int**)' - C++
#include &lt;iostream&gt; #include &lt;ctime&gt; #include &lt;iomanip&gt; #include &lt;cstdlib&gt; #define row 5 #define col 5 using namespace...

Как исправить ошибку невозможно преобразовать аргумент 1 из "unsigned int" в "unsigned int []"? - C++
Ребят, срочно прошу вас помочь.. Есть ошибка (невозможно преобразовать аргумент 1 из &quot;unsigned int&quot; в &quot;unsigned int &quot;) как ее...

ОШИБКА [Error] cannot convert 'int*' to 'float*' for argument '1' to 'void Syma(float*,int*,int) - C++
Какая то проблема с указателями,незнаю,не хочет щитать суму парних чисел в второй подпрограме.Извиниет за ошибки.Не владею руским.Помогите...

Ошибка error C2440: инициализация: невозможно преобразовать 'int' в 'int []' - C++
// ConsoleApplication9.cpp: определяет точку входа для консольного приложения. // #include &quot;stdafx.h&quot; #include &lt;iostream&gt; ...

Ошибка error: invalid types 'int[int]' for array subscript - C++
Дана строка,содержащая английский текст.Найти количество слов,начинающихся с буквы b. Выдает ошибку в 29 строке:error: invalid types...

С++ ошибка error C4430: missing type specifier - int assumed. Note: C++ does not support default-int - C++
Помогите, как исправить данную ошибку. error C4430: missing type specifier - int assumed. Note: C++ does not support default-int Писала...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
ISergey
Maniac
Эксперт С++
1374 / 885 / 52
Регистрация: 02.01.2009
Сообщений: 2,658
Записей в блоге: 1
06.01.2009, 04:02 #2
Цитата Сообщение от seravr Посмотреть сообщение
//VS2008 пишет: error C2070: 'unsigned int': illegal sizeof operand
компелятор ругается на ето
C++
1
2
unsigned lowBit:16;
unsigned HighBit:16;
Добавлено через 54 минуты 54 секунды
Цитата Сообщение от seravr Посмотреть сообщение
определить размер элемента структуры объединения
вобщето размер объединения всегда должен - равнятся размеру сомого большого элемена.
1
seravr
1 / 1 / 0
Регистрация: 11.11.2008
Сообщений: 34
06.01.2009, 23:50  [ТС] #3
точно, спасибо, чё-то сглупил.

А как быть со вторым вопросом??? почему выводиться в виде 42004d? Там что-то не то? Если размер объединения равен unsigned long( 4байта), а два поля структуры по unsigned int (2 байта), то по сути там должно храниться число в формате 424d(см. код) Почему?

Добавлено через 4 часа 36 минут 31 секунду
еще один вопрос не ясен, про bmp формат

для Windows 98/Me, Windows 2000/XP должна использоваться структура BITMAPV5HEADER
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
typedef struct { 
DWORD bV5Size; 
LONG bV5Width; 
LONG bV5Height; 
WORD bV5Planes; 
WORD bV5BitCount; 
DWORD bV5Compression; 
DWORD bV5SizeImage; 
LONG bV5XPelsPerMeter; 
LONG bV5YPelsPerMeter; 
DWORD bV5ClrUsed; 
DWORD bV5ClrImportant; 
DWORD bV5RedMask; 
DWORD bV5GreenMask; 
DWORD bV5BlueMask; 
DWORD bV5AlphaMask; 
DWORD bV5CSType; 
CIEXYZTRIPLE bV5Endpoints; 
DWORD bV5GammaRed; 
DWORD bV5GammaGreen; 
DWORD bV5GammaBlue; 
DWORD bV5Intent; 
DWORD bV5ProfileData; 
DWORD bV5ProfileSize; 
DWORD bV5Reserved; 
} BITMAPV5HEADER, *PBITMAPV5HEADER;
в ней есть элемент-структура CIEXYZTRIPLE bV5Endpoints:
C++
1
2
3
4
5
6
typedef struct tagCIEXYZTRIPLE {
CIEXYZ ciexyzRed;
CIEXYZ ciexyzGreen;
CIEXYZ ciexyzBlue;
} CIEXYZTRIPLE;
typedef CIEXYZTRIPLE FAR* LPCIEXYZTRIPLE;
а в ней есть структура:
C++
1
2
3
4
5
6
typedef struct tagCIEXYZ {
FXPT2DOT30 ciexyzX;
FXPT2DOT30 ciexyzY;
FXPT2DOT30 ciexyzZ;
} CIEXYZ;
typedef CIEXYZ FAR* LPCIEXYZ;
Вопрос, что за тип FXPT2DOT30, помогите разобраться пожалуйста

Добавлено через 55 минут 47 секунд
Вообщем, разобрался,

Скажите плиз эти строки равносильны:
C++
1
typedef long FXPT2DOT30;
и
C++
1
#define long FXPT2DOT30;
Добавлено через 8 часов 8 минут 19 секунд
Модератор, удалите плиз данный топик, я разобрался со всеми вопросами
0
Casper!
15 / 14 / 1
Регистрация: 02.09.2008
Сообщений: 167
07.01.2009, 12:04 #4
некогда не пробывал заменить это
C++
1
2
3
4
5
using std::cin;
using std::cout;
using std::endl;
using std::hex;
using std::dec;
на это
C++
1
using namespace std;
0
seravr
1 / 1 / 0
Регистрация: 11.11.2008
Сообщений: 34
07.01.2009, 12:29  [ТС] #5
нет, надо попробовать
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.01.2009, 12:29
Привет! Вот еще темы с ответами:

Error: lvalue required as left operand of assignment. Не могу разобраться где ошибка - C++
#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; int main() { int n, count = 0; for (n = 111; n &lt; 1000; ++n) if (n / 100...

Ошибка: error C2679: binary '<<' : no operator found which takes a right-hand operand of type - C++
Нужно создать класс List для представления простого списка. Подскажите, почему появляется такая ошибка: error C2679: binary '&lt;&lt;' : no...

Ошибка в коде "no match for 'operator[]' (operand types are 'Student' and 'int')" - C++
Помогите пожалуйста разобраться, в чём проблема? Весь код: #include &quot;windows.h&quot; #include &lt;stdio.h&gt; #include &lt;string.h&gt; #include...

Поместить двоичный код, в веденной строке, в переменную типа int и unsigned int. - C++
Пользователь вводит двоичную строку (32 символа). Поместить двоичный код, в веденной строке, в переменную типа int и unsigned int.


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

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

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