реклама на сайте
подробности

 
 
> Можно ли в WinAVR обозначить максимальное беззнаковое число как нибудь однообразно для переменных разного размера?
Laksus
сообщение Jan 23 2011, 00:40
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 146
Регистрация: 16-05-05
Пользователь №: 5 069



Можно ли в WinAVR обозначить максимальное беззнаковое число как нибудь однообразно для переменных разного размера?
Например если
Код
uint8_t      cnt1;
uint16_t     cnt2;
uint32_t     cnt3;

то можно ли вместо
Код
if(cnt1 < 0xFF) cnt1++;
if(cnt2 < 0xFFFF) cnt2++;
if(cnt3 < 0xFFFFFFFF) cnt3++;

написать, что-то вроде
Код
if(cnt1 < MAX(cnt1)) cnt1++;
if(cnt2 < MAX(cnt2)) cnt2++;
if(cnt3 < MAX(cnt3)) cnt3++;

Вообще то, конечно, можно и 0xFFFF обойтись, но по-моему если бы было однообразно, то меньше шансов случайно ошибиться с разрядностью.

Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Laksus
сообщение Jan 23 2011, 20:21
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 146
Регистрация: 16-05-05
Пользователь №: 5 069



Спасибо всем ответившим, и особое спасибо ReAl.
Насколько я понял вроде бы дает код точно такой как и с разными 0xFF..., вроде бы само подставляет нужное количество разрядов. По-моему это то, что я хотел.
(Проверка на знак не нужна, только на размер, только WinAVR.)

Остальные способы по-моему не совсем то что мне нужно.
___
И еще вопрос в продолжение этой темы.
А как кто в своих реальных программах проверяет не переполнился ли счетчик.
А то может это я пытаюсь велосипед изобрести, а есть какие то устоявшиеся "стандартные" методы.

PS
Насчет "Остальные способы по-моему не совсем то что мне нужно." возможно я неправ.
#define MAX(v) ((1<<(sizeof(v)*8))-1) пока не пробовал.

Сообщение отредактировал Laksus - Jan 23 2011, 20:30
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 29th July 2025 - 09:38
Рейтинг@Mail.ru


Страница сгенерированна за 0.01351 секунд с 7
ELECTRONIX ©2004-2016