Просто хочу знать, избыточны ли приведения в примере - PullRequest
1 голос
/ 15 июня 2011

Просто хочу узнать, являются ли приведенные в приведенном ниже примере избыточными.

uint16_t basic_units = 4587U;

uint8_t int_val = (uint8_t) (((uint16_t) (basic_units * 5U)) / 1000U);

Ответы [ 3 ]

2 голосов
/ 15 июня 2011

Приведение uint8_t избыточно. Приведение uint16_t может иметь (не) намеченное последствие усечения промежуточного значения в расчете, если basic_units * 5U превысит нормальное uint16_t перед делением на 1000.

0 голосов
/ 15 июня 2011

Не могли бы вы рассказать подробнее о резервировании.То, что вы пытаетесь сделать, - это небезопасная практика, которая крайне нежелательна, так как вы собираетесь сокращать время преобразования (преобразование 16 бит в 8 бит).

PS достаточно просто написать uint8_t int_val = (uint8_t) ((basic_units * 5U) / 1000U);

0 голосов
/ 15 июня 2011

Я думаю (uint16_t) в

(uint8_t) (((uint16_t) (basic_units * 5U)) / 1000U)

избыточно .;

Просто потому, что

Uint16_t является синонимом слова "unsigned short"

и

uint8_t простоtypedef для неподписанного символа

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...