ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
19 июля
12455 Топик полностью
Ecole (29.07.2004 11:05, просмотров: 1) ответил patton на я ошибся char i = -1; а вопрос почему это грёбанное преобразование по умолчанию происходит и этот чар для отрицательных печатается FFFFFF перед нужным мне FF
Ответ на самом деле простой Дело в том, что если в функции printf (sprintf и остальных похожих) используется формат "%x", функция считает, что ей на вход передается целое число без знака (т.е. имеющее тип unsigned int). Если программировать на компьютерах с процессорами Intel, то тип unsigned int может иметь длину 16 (под ДОС) или 32 бит (под Win32). Вот и получается, что при передаче функции printf числа char, равного 0xff, функция считает, что ей передали целое число 0xffffffff (в случае с Win32). Для того, чтобы добиться нужного результата, мы вынуждены будем обнулить старшие 24 бита числа. Именно это и делается в выражении i&0xff. Таким образом мы передаем функции printf целое число 0x000000ff.