| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > 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 |
| тема закрыта |