Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Общие вопросы > Что такое UINT? |
Автор: Guest_Dead Moroz 9.4.2003, 17:42 |
По идее массив, по практике инт, а вообще что-то возвращает только при сравнении... |
Автор: Alex101 9.4.2003, 18:52 |
Это unsigned int, а уж что по идее и на практике RTFM ![]() |
Автор: Step 9.4.2003, 19:23 |
беззнаковый инт |
Автор: Voker57 10.4.2003, 14:45 | ||
Это я. Что значит беззнаковый? Как к нему обращаться? |
Автор: -=Baa=-F; 10.4.2003, 15:55 |
UINT uTest = 0; uTest = 0xFFF |
Автор: Step 10.4.2003, 17:14 | ||
|
Автор: Alex101 10.4.2003, 20:54 | ||
Это такой же тип данных, что и int, только в объектах этого типа не могут храниться отрицательные числа - только целые положительные. |
Автор: simanyay 11.4.2003, 10:48 |
UINT это unsigned int, т.е. значения данного целого числа не могут быть отрицательными. |
Автор: Step 11.4.2003, 11:21 |
инт это 64 бита, и уинт тоже 64 бита, только первый это с отрицательным поддиапозоном, и уинт только положительний диапозон |
Автор: Baa 11.4.2003, 11:25 | ||
Step, вот незадача ![]() ![]()
|
Автор: Step 11.4.2003, 11:32 |
Baa наверное ты прав, я просто ошибся, а ведь зная что от 0 до 65535 |
Автор: Alex101 11.4.2003, 17:04 | ||
Это 16-и битный инт. В ДОСовских компиляторах такой и был. |
Автор: Voker57 11.4.2003, 18:51 | ||
Да в том то и дело, что он в заглавии функции в которой он мне нужен он типа CHAR Вот так:
|
Автор: brb 12.4.2003, 00:51 | ||||
Step
И неправ еще раз:
потому что 65к это 16 бит! |
Автор: Step 15.4.2003, 15:31 |
brb короче я точно знаяю что инт и юинт одинаковое количество бит |
Автор: Voker57 15.4.2003, 18:06 |
А всё-таки КАК к нему-CHARу обращаться![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Автор: Step 15.4.2003, 18:10 |
[QUOTE]Да в том то и дело, что он в заглавии функции в которой он мне нужен он типа CHAR Вот так:[QUOTE] void CTwsView::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) [/QUOTE] да вот так и обращаться nChar=5; или if (nChar==5).... короче как к обыкновенному инту, только надо помнить что у него нет отрицательных значения, что не понятно |
Автор: Voker57 16.4.2003, 14:50 | ||
Ага, а если надо его сравнить с символом в буквенном виде а не в цифровом |
Автор: Step 16.4.2003, 15:26 |
char * a; a= (char*)(&nChar) if( *a=='s') что-то вроде этого |
Автор: Baa 16.4.2003, 15:40 |
if ((char)nChar == 's')... |
Автор: Step 16.4.2003, 15:43 |
Baa ты думаеш он сможет 4 байтовую переменную в однобайтовую конвертирова |
Автор: Baa 16.4.2003, 15:55 | ||
я не думаю, я знаю... более того, прокатит даже так:
|
Автор: Step 16.4.2003, 18:59 |
а ты с интом такую штуку не проварачивал. |
Автор: brb 17.4.2003, 04:11 |
Step, Отнюдь! unsigned не имеет знакового бита, а int имеет. Но, sizeof() действительно возвращает одно и тоже. |
Автор: Step 17.4.2003, 10:46 |
вопрос вобщето в том где этот бит распологается.... |
Автор: DENNN 17.4.2003, 11:37 | ||
Ну вот, приехали ![]() |
Автор: Step 17.4.2003, 11:48 |
DENNN да я просто никогда об этом не задумывался хотя подозреваю что бит должен находиться справа |
Автор: DENNN 17.4.2003, 11:55 |
А как двухбайтовое число в памяти располагается тоже не задумывался? ![]() ![]() |
Автор: Step 17.4.2003, 12:00 |
нет это я знаю как ни как когдато на асме писал, а вот о знаков бите не задумывался просто потому что это для процессора было прозрачно, если подумать то можно и додуматься старший байт спереди младщий сзади, это я еще при изучении асма на зет 80 усвоил |
Автор: DENNN 17.4.2003, 12:05 |
Тоже с Z80 начинал? Классная была вещица. А знаковый бит везде одинаков: в однобайтовом числе это самый старший бит. |
Автор: Step 17.4.2003, 12:17 |
Z80 - рулезззз.... |
Автор: Gannibal 17.4.2003, 13:58 |
bez rulez nebudet krutez |
Автор: Fantasist 17.4.2003, 16:27 | ||
Да и вообще отрицательные числа храняться в дополнительном коде. (первый бит- знак, остальные реверсированное абсолютное значение-1) |
Автор: Step 17.4.2003, 16:30 | ||
|
Автор: Fantasist 17.4.2003, 16:36 | ||
Конечно известно - я же только что об этом сказал. |
Автор: Step 17.4.2003, 16:40 |
и без тебя известно |
Автор: Voker57 17.4.2003, 19:12 | ||
Ага а если ВООБЩЕ НИКАКОГО значения nChar НЕ ВОЗВРАЩАЕТ!!! Ну, возвращает но ВСЕГДА 56!!! Ничё ужастик? ![]() |
Автор: Step 18.4.2003, 09:24 |
эт ты чегото не досмотрел.... |
Автор: man2002ua 18.4.2003, 13:34 | ||
Объясните - не понятно! ![]() Ну и раздули пламя ![]() |
Автор: Alex101 18.4.2003, 14:32 |
А вы еще представление с плавающей точкой обсудите ![]() |
Автор: DENNN 18.4.2003, 14:44 | ||
Если разобраться, то не намного сложнее целочисленных. |
Автор: man2002ua 18.4.2003, 14:52 | ||
дафай-дафай - хуже не будет! |
Автор: DENNN 18.4.2003, 16:44 |
А в чем ирония? Или тебе кажется этот настолько сложно, что не стоит потраченных усилий? |
Автор: man2002ua 18.4.2003, 16:58 |
Я не иронизирую, я действительно не помню ![]() |
Автор: Step 18.4.2003, 16:59 |
тему пора закрывать |
Автор: DENNN 18.4.2003, 17:04 |
Аминь. |
Автор: Step 18.4.2003, 17:19 |
![]() |
Автор: HexoGenus 19.4.2003, 21:09 |
По поводу размерности проще посмотреть хелп билдера... unsigned char 8 bits 0 to 255 char 8 bits -128 to 127 short int 16 bits -32,768 to 32,767 unsigned int 32 bits 0 to 4,294,967,295 int 32 bits -2,147,483,648 to 2,147,483,647 unsigned long 32 bits 0 to 4,294,967,295 enum 16 bits -2,147,483,648 to 2,147,483,647 long 32 bits -2,147,483,648 to 2,147,483,647 float 32 bits 3.4 x 10-38 to 3.4 x 10+38 double 64 bits 1.7 x 10-308 to 1.7 x 10+308 long double 80 bits 3.4 x 10-4932 to 1.1 x 10+4932 а вот насчет того где какой бит находится вопрос интересный... слабо кому нибудь привести пример функции которая выведет в текстовую переменную побитово переменную любого типа по ее адресу ![]() например что бы вместо int(5) получить String("00000000000000000000000000000101") каюсь в свое время у меня это не получилось... вроде и адрес переменной брал и потом как к булевому массиву обращался проверяя значение каждого бита... но получалась какая то чепуха вместо числа... |
Автор: DENNN 19.4.2003, 21:26 | ||
По поводу размерности лучше все-таки на константы не расчитывать. Потому как в стандарте на C (и C++ тоже!) указано, что размерность некоторых типов данных может зависеть от конкртной реализации компилятора. А мы то с вами всетаки на C пишем а не просто на билдере или там VC. А насчет второго вопроса, то он в общем смысле некоректен. То как располагается в памяти число, зависит в первую очередь, какой тип данных оно собой представляет. Так байт вида 0x10000001 может трактоваться и как число 129 если это тип unsigned char (на Win), и как -2 если это тип char. Просто вывести все биты в тестовую переменную проблемы никогла не вызывало:
Может не самое быстрое решение из всех возможных, но этот то что пришло в голову сразу. Да и загнать в шаблон такую inline функцию - задача выполнимая для всех |
Автор: HexoGenus 20.4.2003, 12:14 |
Хммм.... и все таки я не на с а на билдере программирую и приходится использовать все его надстройки и соответствующие расширения... ![]() твой код у мне не удалось запустить... компилятор ругался на BYTE от этого я избавился подключив #include <WTYPES.H> а вот строчку } while (BYTE!=0); он совсем не принимает ... к своему стыду я не знаю что означает конструкция value&mask просвети плиз... |
Автор: DENNN 20.4.2003, 12:24 |
Сорри. Ответ писал ночью поэтому там ошибочка: не while (BYTE!=0); а while (mask!=0); ![]() Уже все исправил. Смотри заново. Конструкция (value&mask) означает в C побитовую операцию AND. тип BYTE в MSDN описывается как "BYTE An 8-bit integer that is not signed." иными словами это 8-мибитное беззнаковое целое. В моем примере не принципиально, можно заменить на unsigned char, int, long и т.п.. |
Автор: Voker57 21.4.2003, 19:12 | ||
А мне по жизни с компиляторами не везет... ТЕМУ ПОРА ЗАКРЫВАТЬ а так ни фига и не ясно... ![]() А тема горячая, аж мышка плавится! ![]() |
Автор: Fantasist 21.4.2003, 21:02 | ||||
Другими словами typedef unsigned char
На С++. Разные языки все-таки. |
Автор: Wowa 22.4.2003, 00:54 |
тема закрыта ![]() |