Главная страница
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.023 c
1-1082214926
Barmaglot
2004-04-17 19:15
2004.05.02
Pascal......работа с матрицами....


7-1076338598
gid
2004-02-09 17:56
2004.05.02
Как определить загруженность процессора в Win XP ?


1-1082095979
kostik78ua
2004-04-16 10:12
2004.05.02
Инсталляция компонент


1-1081963930
TCrash
2004-04-14 21:32
2004.05.02
Котмпонент по типу TEdit


7-1077518181
SDW-syscoder
2004-02-23 09:36
2004.05.02
Нулевое кольцо защиты (Ring0)