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

Отправлено Oldring 24 июня 2002 г. 12:42
В ответ на: В этом случае (256 * hi + lo)(+) отправлено Придира 24 июня 2002 г. 09:59

Поясню.

Компилятор имеет право складывать, но если у него хороший оптимизатор - он этого делать не будет, а просто в отдельные байты все распихает. А если у компилятора оптимизатор плохой - тогда стоит задуматься, а почему все-таки используется именно этот компилятор? К корректности программы это не имеет никакого отношения.

Если для задачи скорость и размер программы не важны - тогда все равно, как писать, 256*hi+lo или (hi << 8) | lo. Не имеет значения, как компилятор это скомпилирует. Только не следует смешивать побитовые и арифметические операции, все-таки это разные вещи. Опять же, к формальной корректности программы это не имеет никакого отношения.

Поэтому, если нет реальной потребности заниматься микрооптимизацией, следует писать так, как для большинства людей наиболее естественно: 256*hi+lo. Пусть поработает компьютер.

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

Ответы



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

E-mail: info@telesys.ru