Цитата(rezident @ Sep 17 2011, 15:10)

Следует использовать для промежуточных вычислений 32-х битную переменную или явно приводить типы операндов.
Код
x = (uint16_t) (((uint32_t)y*32UL)/100UL);
Можно конечно воспользоваться и неявным приведением типов.
Код
x = (((uint32_t)y*32UL)/100;
Кстати, эта тема имеет слабое отношение к разделу MSP430. Это раз. Во-вторых, не могли бы вы перестать плодить новые темы по каждому "чиху"? Вы же разрабатываете электросчетчик на MSP430 вроде? Вот и пишите в одной теме о всех проблемах с которыми сталкиваетесь при этом. И вам самому и читающим ваши сообщения будет удобнее и понятнее контекст ваших вопросов/проблем.
P.S. пардон, просмотрел, что у вас беззнаковые операнды. Поправил. Кстати, а значительная ошибка округления при целочисленных вычислениях вас нисколько не смущает?
Спасибо. не то чтобы разрабатываю. Просто "ковыряю" апликуху от TI.
Ошибка округления? Я проверил свой код в CBuilder (использовал только short и int). Точность устраивает.
Про посты по каждому "чиху": это вам это может паказаться чихом. А для меня это затруднения, которые могут показаться мелкими, но именно из них и складывается опыт. И ещё мне просто не у кого спросить... (( простите
Сообщение отредактировал Zelepuk - Sep 17 2011, 12:16