Здравствуйте! (1)Подскажите, пожалуйста, почему при printf(“%d”,-1&0xFF); напечатается 255, а при printf(“%d”,-1); напечатается –1. Что происходит при побитовом или, в данном примере? (2)unsigned char a=-96; unsigned int b=-96; printf(“%d %d
”,a,b); И почему a напечатается 160, b напечатается –96. (Тестировано в Borland 3.1) Спасибо.
Приветствую Вас, Alexander! 1. слишком много левых символов. 2. %d ожидает int. A вы даете char - это опасно. А так - %d в случае с char - ом там положительное число так как нет знакового расширения - слева дополняются 0. Ответ отправлен: 23.06.2004, 09:00 Отправитель: vitya Отвечает CrackLab
Доброе время суток, Alexander! 1) Разница в том, какой параметр передается функции printf. Смотрите. -1 & 0xFF = 0xFFFFFFFF & 0x000000FF = 0x000000FF = 255. -1 = 0xFFFFFFFF = -1 =) Думаю все понятно. 2) unsigned char - однобайтовая переменная. Когда мы пишем unsigned char a = -96, то по адресу, по которому находится наш байт, хранящий значение переменной а, записывается 0x0A, т.к. при однобайтовом рассмотрении это и есть -96. unsigned int - четырехбайтовая переменная. Когда мы пишем unsigned int b = -96, то по адресу, по которому находятся наши 4 байта, хранящие значение переменной b, записывается 0xFFFFFF0A, т.к. при четырехбайтовом рассмотрении это и есть -96. Формат "%d" указывает функции printf рассматривать передаваемые значение как четырехбайтовые целые числа. Далее вместо a функции printf передается dword (4х байтовое число)
0x000000A0 = 160 при четырехбайтовом рассмотрении, что мы и видим на экране. Вместо b передается 0xFFFFFFA0 = -96 при четырехбайтовом рассмотрении, что мы тоже видим на экране. Ответ отправлен: 22.06.2004, 20:57 Отправитель: CrackLab Отвечает bocha
Доброе время суток, rfc! http://www.google.com/search?ie=windows-1251&q=rfc+archive Ответ отправлен: 23.06.2004, 08:55 Отправитель: vitya Отвечает chebv
Добрый день, rfc! http://www.ietf.org/rfc.html http://www.opennet.ru/rfc.shtml http://www.rfc-editor.org/ Но самый лучший http://www.ya.ru :) Ответ отправлен: 23.06.2004, 09:28 Отправитель: chebv
Форма отправки вопроса
Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+
или отправлять вопросы с сайта по адресу:
http://rusfaq.ru/cgi-bin/Message.cgi.