Форум: "Потрепаться";
Текущий архив: 2004.05.02;
Скачать: [xml.tar.bz2];
ВнизСимвол со знаком. Символ без знака. Найти похожие ветки
← →
Карелин Артем © (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 intunsigned char c = 0x80;
char p = 0x80;
printf("%d\n", (int) c);
printf("%d\n", (int) p);
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2004.05.02;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.038 c