<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>AVR035: эффективное кодирование на C для 8-битных AVR</title>
		<description>Обсуждение AVR035: эффективное кодирование на C для 8-битных AVR</description>
		<link>http://microsin.ru/programming/avr/avr035-efficient-c-coding.html</link>
		<lastBuildDate>Tue, 11 Aug 2026 20:32:05 +0300</lastBuildDate>
		<generator>JComments</generator>
		<atom:link href="http://microsin.ru/component/option,com_jcomments/format,raw/limit,10/object_group,com_content/object_id,1769/task,rss/" rel="self" type="application/rss+xml" />
		<item>
			<title>arhat109@mail.ru написал:</title>
			<link>http://microsin.ru/programming/avr/avr035-efficient-c-coding.html#comment-11069</link>
			<description><![CDATA[Столкнулся с такой неприятностью: #define myMillis() ((uint8_t)milli s()) uint8_t keys[] = {/*инициализация массива*/} void myFunc(uint8_t num){ uint8_t time=myMillis(); if( time - keys[num]> 25U ){ /*тут что-то делаем*/} } Так вот, вычитание двух беззнаковых байт приводит к их уширению до знакового int (стандарт п.7.6) что дает совершенно идиотский результат. Как этого (п.7.6.) избежать грамотно? microsin: самый простой способ - перейти на числа со знаком. Если все-таки нужен сложный способ, то нужно программно обеспечить такую ситуацию, чтобы всегда вычитаемое число было меньше числа, из которого вычитают. Для этого возможно придется увеличить разрядность чисел (например, вместо uint8_t использовать uint16_t или даже uint32_t).]]></description>
			<dc:creator>arhat109@mail.ru</dc:creator>
			<pubDate>Mon, 18 Feb 2019 14:32:56 +0300</pubDate>
			<guid>http://microsin.ru/programming/avr/avr035-efficient-c-coding.html#comment-11069</guid>
		</item>
	</channel>
</rss>
