[an error occurred while processing this directive]
[an error occurred while processing this directive]
Есть ли тут любители AVR GCC и знатоки ANSI C ? Взялся свой код сделать удобочитаемым и наткнулся на интересную вещь(+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
[an error occurred while processing this directive]
[an error occurred while processing this directive]
[an error occurred while processing this directive]
|
Отправлено
АндрейК 31 января 2002 г. 17:21
|
|
|
|
Когда пишешь в #define выражение
#define IPRED_140 (uint) (0x3FF * 14 / 15 * 45 / 50)
результат получается неправильный:
хочется получить 0x35B, а получается 0xFE3C, т.к. после вычисления "0x3FF*14/15*45" получается результат 42966 и он расценивается, как -22570
ТО ЕСТЬ препроцессор обрабатывает все, как signed int
а вот теперь ВНИМАНИЕ если напишешь:
#define IPRED_140 (uint) (0x3FF * 0.014 / 0.015 * 4.5 / 5)
то все получается нормально и даже точность не теряется, т.е. теперь препроцессор обрабатывает все как float
это особенности компилятора или языка С вообще ?
Составить ответ
|||
Конференция
|||
Архив
Ответы
Перейти к списку ответов
|||
Конференция
|||
Архив
|||
Главная страница
|||
Содержание
|||
Без кадра
E-mail:
info@telesys.ru