[an error occurred while processing this directive]
Глюк компилятора или мой? Объясните мне глупому...(Hi-Tech C)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
миниатюрный аудио-видеорекордер mAVR

Отправлено Юрец 05 июля 2002 г. 02:24

нарвался на такие грабли:
---------------------------------------------
unsigned char a;
unsigned char b;

a = 0;
b = 0xFF;
if(a == ~b)
{
<что-нибудь>
}
--------------------------------------------
Так вот,это <что-нибудь> никогда не выполняется!
Решил посмотреть ассемблерный листинг - оказалось компилятор переводит эти числа в 16-битные,получается 0x0000 != 0xFF00.
Ладно,думаю,может я чего-то недопонимаю - смотрю MSDN по поводу оператора "~", там написано: "the result has the type of the operand after conversion",но операнд же у нас char,а не int и не short.

Потом попробовал в MS Visual C++ - тоже самое...
Так что же это? Глюки в двух компиляторах? =/



Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru