[an error occurred while processing this directive]
В любом (пробовал MSVC, CCS для 6000, CCS для 5000) С объявляю signed long int - все работает. Главное, что-бы signed было. (точнее unsigned не было :)). А про SmallInt (+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено SM 23 июля 2003 г. 12:00
В ответ на: А должно? отправлено _Elektronik_ 23 июля 2003 г. 11:15

Оно только с виду работает. А вот попробуйте сделать

var
si : SmallInt;
begin
si := -1;
si := si shr 17;
end;

По логике вещей должно оставаться все равно -1. Ан нет - 32767 :). А вычисленное значение сдвига в реальности может оказываться больше количества разрядов. В общем - это выход, но с припрятанными граблями.

Вероятно операции со SmallInt делаются все равно в 32-х битном режиме, что и для первых 16-ти сдвигов дает правильный результат... А дальше вылезают нули.

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

Ответы



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

E-mail: info@telesys.ru