Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.024 c
4-1078726836
graY
2004-03-08 09:20
2004.05.02
Как сделать так чтоб окно было всегда на первом плане


11-1065696703
Aser
2003-10-09 14:51
2004.05.02
Кириллица в sqlitecc


7-1079075427
smu
2004-03-12 10:10
2004.05.02
Как очистить кэш дисковода?


14-1081333588
syte_ser78
2004-04-07 14:26
2004.05.02
Аська


14-1081694979
Piter
2004-04-11 18:49
2004.05.02
Quake2 написана под .NET? :)




   Наверх