int(char(0x80)) = FF FF FF 80
int(char(0xA0)) = FF FF FF A0
Вопрос про типы переменных
Можете объяснить, что творит машина:
int a=0;
char t[] = {0x80,0x90,0xA0,0xB0,0xC0}
a = t[0]; // тут a=0x00 00 00 80
a = t[2]; // а тут почему-то a=0xFF FF FF C0
когда и почему в начале пояляются FF... ?
(если надо, могу приложить код, откуда эта ошибка появилась, т.к. тут просто похожий упрощенный пример)
Код:
А получается это из того, что char(0x80) = -128, char(0xA0) = -96, ну а когда присваиваете к int, то появляется добавочный код
код в студию!!
Цитата: vAC
Что-то вы напутали...
А получается это из того, что char(0x80) = -128, char(0xA0) = -96, ну а когда присваиваете к int, то появляется добавочный код
Код:
int(char(0x80)) = FF FF FF 80
int(char(0xA0)) = FF FF FF A0
int(char(0xA0)) = FF FF FF A0
А получается это из того, что char(0x80) = -128, char(0xA0) = -96, ну а когда присваиваете к int, то появляется добавочный код
похоже напутал, т.к. у самого на входе было 0x00, 0x00, 0x02, 0xd2 .
Спасибо, что объяснили. Я думал, что char будет преобразоввываться, как unsigned.
Тему можно закрыть.