[an error occurred while processing this directive] [an error occurred while processing this directive]
Ответ: Если не пользоваться нестандартными расширениями C для 8-битных микроконтроллеров, то не рискую.
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
[an error occurred while processing this directive] [an error occurred while processing this directive]

Отправлено Oldring 24 июня 2002 г. 14:54
В ответ на: Ответ: Замечание по поводу (hi<<8)|lo. отправлено trainer 24 июня 2002 г. 14:18

По стандарту C типы, меньшие int преобразуются перед выполнением операций в int. Если компилятор ведет себя иначе - значит в нем ошибка. Если же программист сам включил опцию, говорящую, что не нужно расширять байты до инта, и получил не то, что ожидал - сам виноват. Только это уже вопрос, имеющий отношение не к языку программирования, а к конкретному компилятору.

А полагаться на то, что 256 не влазит в байт, и поэтому 256*hi даст правильный результат, а hi<<8 неправильный - не слишком ли тонко? Не лучше ли всегда писать явное расширение переменной к большему типу 256*((unsigned int)hi), если возникает потребность работать с нестандартными режимами компиляции?

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

Ответы



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

E-mail: info@telesys.ru