Страница 1 из 1

помогите организовать счетчик

Добавлено: Пт фев 17, 2012 00:00:47
vovik15
здравствуйте!

есть переменная unsigned char tmp;
к ней мы будем прибавлять значения tmp++;
и от нее же отнимать tmp--;

когда прибавляем 1,2,3...255-0 и так далее по кругу
а когда отнимаем 100,99,98...0 и счет больше не идет в обратном направлении!

как с этим бороться?
спасибо за помощь

Re: помогите организовать счетчик

Добавлено: Пт фев 17, 2012 07:50:08
pyzhman

Код: Выделить всё

if(tmp) --tmp;
т.е. если переменная не равна 0, то уменьшаем на 1.

Re: помогите организовать счетчик

Добавлено: Пт фев 17, 2012 11:17:58
vovik15
вставил код. всеравно отнимает до 0,и на этом счет останавливаеться
а мне нужно так чтобы 2-1-0-255-254-253 и так далее

Re: помогите организовать счетчик

Добавлено: Пт фев 17, 2012 11:20:18
Мастер Ломастер
vovik15 писал(а):вставил код. всеравно отнимает до 0,и на этом счет останавливаеться
а мне нужно так чтобы 2-1-0-255-254-253 и так далее
код, который вам посоветовал pyzhman именно с остановкой в нуле и будет работать. вы непонятно выразились в первом посте. в бесконечном цикле tmp--; без всяких прибамбасов всегда будет работать так, как вы хотите: 2-1-0-255-254-253...

Re: помогите организовать счетчик

Добавлено: Пт фев 17, 2012 12:18:08
vovik15
да в том то и дело что постоянно бесконечный цикл не работает. отнимает до нуля и счет останавливаеться

Re: помогите организовать счетчик

Добавлено: Пт фев 17, 2012 12:21:58
Engineer_Keen
Значит у вас не бесконечный цикл, а с каким-то условием по tmp. Приводите код целиком.

Re: помогите организовать счетчик

Добавлено: Пт фев 17, 2012 12:23:16
Dotoro22
Ты же сам unsigned поставил)

Re: помогите организовать счетчик

Добавлено: Пт фев 17, 2012 12:55:32
vovik15
а разве UNSIGNED плохо?

Re: помогите организовать счетчик

Добавлено: Пт фев 17, 2012 13:06:50
ploop
Неплохо, но это беззнаковое число, и по логике не может быть меньше нуля.

Re: помогите организовать счетчик

Добавлено: Пт фев 17, 2012 15:06:16
pyzhman
Это что за код, в котором после 3,2,1,0 не идет 255 при unsigned char?

Re: помогите организовать счетчик

Добавлено: Пт фев 17, 2012 15:13:35
Мастер Ломастер
pyzhman писал(а):Это что за код, в котором после 3,2,1,0 не идет 255 при unsigned char?
программисты, родившиеся под знаком Овна, пишут овно-код :)))

Re: помогите организовать счетчик

Добавлено: Пт фев 17, 2012 15:59:12
ploop
Так идёт или не идёт? Мне ведь тоже интересно, надо к Сям приобщаться :)))

Re: помогите организовать счетчик

Добавлено: Пт фев 17, 2012 16:07:55
pyzhman
Вот что дает CV при компиляции:

Код: Выделить всё

                 ; 0000 0082 --tmp;
                 _0x46:
000105 947a      	DEC  R7

Re: помогите организовать счетчик

Добавлено: Пт фев 17, 2012 16:15:19
phenomen
Самому стало интересно :)
Если с

Код: Выделить всё

unsigned char tmp = 255;
tmp++;
все более менее понятно (установка флага переполнения)
то

Код: Выделить всё

unsigned char tmp = 0;
tmp--;
непоняточка.

Топикстартеру:

Код: Выделить всё

if(tmp != 255)
     tmp++;
else
     tmp = 0;

Код: Выделить всё

if(tmp != 0)
     tmp--;
else
     tmp = 255;

Re: помогите организовать счетчик

Добавлено: Пт фев 17, 2012 16:20:30
uldemir
А signed позволяет себя переполняться? тогда может сделать union с signed и unsigned. Signed крутить, а unsigned использовать?

Re: помогите организовать счетчик

Добавлено: Пт фев 17, 2012 16:35:37
phenomen
Компилятор всеравно заменит -- и ++ на DEC и INC соответсвенно независимо от типа переменной

Re: помогите организовать счетчик

Добавлено: Пт фев 17, 2012 16:36:55
uldemir
тогда не понятно в чем собственно проблема.