Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.05.02;
Скачать: CL | DM;

Вниз

Символ со знаком. Символ без знака.   Найти похожие ветки 

 
Карелин Артем ©   (2004-04-08 15:11) [0]

char и unsigned char оказывается совсем разные вещи в Ц. Отличаются старшим байтом на 52 процессоре.


 
SPeller ©   (2004-04-08 15:58) [1]

Старший байт в char ?? :-)))


 
Polevi ©   (2004-04-08 16:09) [2]

:)


 
Anatoly Podgoretsky ©   (2004-04-08 16:14) [3]

А чего смеять, в зависимости от компилятора и платформы это может быть 8, 16, 32 бита со знаком и без. Отддано на откуп разработчикам, по крайней мере это было справедливо для Си, не знаю как для Си++


 
Карелин Артем ©   (2004-04-09 13:02) [4]

SPeller ©   (08.04.04 15:58) [1]
Да, битом.


 
KSergey ©   (2004-04-09 13:26) [5]

А в каком смысле "Отличаются старшим битом" (с корректировкой описки)?? Что значит отличаются??


 
Карелин Артем ©   (2004-04-09 13:36) [6]

А в том, что логическое умножение на 127 char и unsigned char дает разные результаты.


 
Verg ©   (2004-04-09 14:04) [7]


> Карелин Артем ©   (09.04.04 13:36) [6]
> А в том, что логическое умножение на 127 char и unsigned
> char дает разные результаты.


Например?


 
Карелин Артем ©   (2004-04-09 14:17) [8]

Чет опять опечатался 127 вместо 128 написал.
Это на проце Atmel AT80S8252 зависит от типа переменной с:

  unsigned char c;
   c=getchar();
****************
   if ((c&128) != (P2&128))  {
           printf ("7\n");
         }


 
VMcL ©   (2004-04-09 14:41) [9]

>>Карелин Артем ©  (09.04.04 14:17) [8]

Здесь нет умножения. Только побитовое И.


 
Карелин Артем ©   (2004-04-09 14:49) [10]

VMcL ©   (09.04.04 14:41) [9]
Ну что, не у меня одного сегодня пятница. http://psi-logic.narod.ru/bool/bool4.htm однако.


 
KSergey ©   (2004-04-09 15:03) [11]

> [8] Карелин Артем ©   (09.04.04 14:17)

Вы здесь первый день??


 
VMcL ©   (2004-04-09 15:03) [12]

>>Карелин Артем ©  (09.04.04 14:49) [10]

Побитовое "И" (&) и логическое "И" (&&) различаем?


 
Verg ©   (2004-04-09 15:24) [13]


> char и unsigned char оказывается совсем разные вещи в Ц.


Конечно разные.
Но только вот это

>  if ((c&128) != (P2&128))  {


тут не причем.
Дело тут в твоем кросскомпилере, скорее всего.
А в частности в том, что когда сравниваются две переменных, пусть даже и формально но разных типа, то он приводит их обе к общему соместимому типу, а потом сравнивает. В твоем случае, видимо, к int или к unsigned int

 unsigned char c = 0x80;
 char p = 0x80;
 printf("%d\n", (int) c);
 printf("%d\n", (int) p);



Страницы: 1 вся ветка

Текущий архив: 2004.05.02;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.025 c
1-1082207475
Rasa
2004-04-17 17:11
2004.05.02
Как изменить каретку в Memo?


6-1078824782
Дмитрий
2004-03-09 12:33
2004.05.02
Определение MAC адреса НЕ виндявой тачки


1-1081916561
Марат
2004-04-14 08:22
2004.05.02
Формат времени


14-1081339441
sHinE
2004-04-07 16:04
2004.05.02
C какими БД работает дельфи?


1-1081958058
DarkSet
2004-04-14 19:54
2004.05.02
Защита файлов от доступа