was not declared in this scope

PINDOSHATER
Offline
Зарегистрирован: 16.08.2015
Помогите, пожалуйста, уже готов разбить комп в бессилии. Я хочу сделать счетчик.
Т.е. смысл таков. Я к байту 2 прибавляю 250 (FBh) и OLD_BYTE2 держит значение, которое было перед тем, как было прибавлено 250.
Если после прибавления 250 значение стало меньше чем OLD_BYTE2, т.е. произошел переход и значение стало, например, 244 (250 + 250 = 1244), то мне в BYTE1 надо прибавить единицу, чтобы стало как бы 1244, а не 0244, птому что первое значение естественно теряется в 8 битах. 

int OLD_BYTE2 = BYTE2;
 BYTE2 = BYTE2 + 250;
 if (OLD_BYTE2 > BYTE2)
  {
    int BYTE1 = BYTE1 + 1;
  }

 // вот тут байт1 снова старый, т.е. 1 не прибавился!!!!!!!!!!!!!
  int BLIN[2]  = {BYTE1, BYTE2}; // соответственно тут сначала будет {00, 250}, а потом  {00, 244}, а мне надо {01, 244}

Если BYTE1 не объявить в начале программы, то вообще будет ошибка BYTE1 was not declared in this scope, даже если дописать к условию

 else

int BYTE1;

Буду очень благодарен за помощь!

 

 

Клапауций 998
Offline
Зарегистрирован: 12.08.2015
01 Помогите, пожалуйста, уже готов разбить комп в бессилии.

разбей, запости фотки - будет всем радость лицезреть неуравновешенного недопрограммиста.

*полный код, а не цитаты давай - трудно понять, где читаем, а где не читаем, пятно - рыба завёрнута была...

PINDOSHATER
Offline
Зарегистрирован: 16.08.2015

Шутку понял, смешно...

Тут код на 3 листа и ты еще больше запутаешься. Вопрос простой, как вытащить BYTE1 за рамки условия. 

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

Например объявить его на уровне OLD_BYTE и в строке 09 убрать int

Клапауций 998
Offline
Зарегистрирован: 12.08.2015

PINDOSHATER пишет:

Шутку понял, смешно...

Тут код на 3 листа и ты еще больше запутаешься. Вопрос простой, как вытащить BYTE1 за рамки условия. 

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

PINDOSHATER
Offline
Зарегистрирован: 16.08.2015

Спасибо за ответ, но я объявил его в само начале программы. int я по ошибке тут в коде указал. 

Но загвоздка в том, что мне надо прибавить к BYTE1 единицу, т.е. на выходе должно быть BYTE1+1, а не то что я объявил.

Клапауций 998
Offline
Зарегистрирован: 12.08.2015

PINDOSHATER пишет:

Но загвоздка в том, что мне надо прибавить к BYTE1 единицу, т.е. на выходе должно быть BYTE1+1, а не то что я объявил.

ну, смотри, почему я делаю так ++n; и у меня после этого переменная n становится на 1 больше.

вопрос в другом - ты где объявляешь переменную n ?

PINDOSHATER
Offline
Зарегистрирован: 16.08.2015

Да, это короче, но результата не меняет. Вот код:

 

int BYTE1 = 0;
int BYTE2 = 0;

void setup() {
  

}

void loop() {

int OLD_BYTE2 = BYTE2;
BYTE2 = BYTE2 + 250;
 if (OLD_BYTE2 > BYTE2)
  {
   BYTE1 = BYTE1 + 1;
  }
 int BLIN[2]  = {BYTE1, BYTE2}; // т.е. сейчас в BYTE1 всегда 0, т.е. с условия новое увеличенное значение не берется.
}

 

Клапауций 998
Offline
Зарегистрирован: 12.08.2015

ну, шо тут получается:

берём 0 - запоминаем, к 0 прибавляем 250 - запоминаем 250, смотрим 0 > 250 ? - нет, не прибавляем 1 к 0.

*условие прибавления 1 не сработает никогда.

PINDOSHATER
Offline
Зарегистрирован: 16.08.2015

Все решил, всем спасибо)

AlexandrK
Offline
Зарегистрирован: 03.05.2015

А почему для хранения данных в один байт объявляется переменная типа int?

Клапауций 998
Offline
Зарегистрирован: 12.08.2015

AlexandrK пишет:

А почему для хранения данных в один байт объявляется переменная типа int?

потому, что мы должны увидеть фотки разбитого компьютера.