was not declared in this scope
- Войдите на сайт для отправки комментариев
Вс, 16/08/2015 - 16:38
Помогите, пожалуйста, уже готов разбить комп в бессилии. Я хочу сделать счетчик.
Т.е. смысл таков. Я к байту 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;
Буду очень благодарен за помощь!
01Помогите, пожалуйста, уже готов разбить комп в бессилии.разбей, запости фотки - будет всем радость лицезреть неуравновешенного недопрограммиста.
*полный код, а не цитаты давай - трудно понять, где читаем, а где не читаем, пятно - рыба завёрнута была...
Шутку понял, смешно...
Тут код на 3 листа и ты еще больше запутаешься. Вопрос простой, как вытащить BYTE1 за рамки условия.
Например объявить его на уровне OLD_BYTE и в строке 09 убрать int
Шутку понял, смешно...
Тут код на 3 листа и ты еще больше запутаешься. Вопрос простой, как вытащить BYTE1 за рамки условия.
я не могу узнать, где ты делаешь принципиальную ошибку - напиши примерчик, где у тебя переменная увеличивается на единицу при условии и где у тебя не происходит желаемого.
Спасибо за ответ, но я объявил его в само начале программы. int я по ошибке тут в коде указал.
Но загвоздка в том, что мне надо прибавить к BYTE1 единицу, т.е. на выходе должно быть BYTE1+1, а не то что я объявил.
Но загвоздка в том, что мне надо прибавить к BYTE1 единицу, т.е. на выходе должно быть BYTE1+1, а не то что я объявил.
ну, смотри, почему я делаю так ++n; и у меня после этого переменная n становится на 1 больше.
вопрос в другом - ты где объявляешь переменную n ?
Да, это короче, но результата не меняет. Вот код:
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, т.е. с условия новое увеличенное значение не берется. }ну, шо тут получается:
берём 0 - запоминаем, к 0 прибавляем 250 - запоминаем 250, смотрим 0 > 250 ? - нет, не прибавляем 1 к 0.
*условие прибавления 1 не сработает никогда.
Все решил, всем спасибо)
А почему для хранения данных в один байт объявляется переменная типа int?
А почему для хранения данных в один байт объявляется переменная типа int?
потому, что мы должны увидеть фотки разбитого компьютера.