Переменная таинственно устанавливается в 204

впервые с помощью SO. Итак, я небрежно кодирую и запускаю эту глобальную переменную, rC и устанавливаю ее равной 0. rC — счетчик, но когда приходит время заняться своими делами, это вызывает удивление. Вот немного кода и вывод (я программирую Doit ESP32)

DEBUGPRINTLN3("Sampled xC");
DEBUGPRINTLN3(xC);
rC = 0;
Serial.println("rC before increment");
Serial.println(rC);
if(rC == 204)
{
Serial.println("WTF");
rC = 0;
}
rC += 1;
dx = -dx;
xC = -xC;

Оператор if был добавлен, когда я искал источник проблемы (эта ошибка сводит меня с ума всю мою программу, так как этот счетчик сигнализирует о множестве других вещей, включая собственный сброс)

Это последовательный вывод:

14:48:23.017 -> Sampled xC
14:48:23.017 -> 299
14:48:23.017 -> rC before increment
14:48:23.017 -> 204
14:48:23.017 -> WTF
14:48:23.017 -> xC:
14:48:23.017 -> -299
14:48:23.017 -> HAS REVERSED
14:48:23.017 -> rC INCREMENTED 1
14:48:23.017 -> 1

«Исправление», которое я использовал, было супер дерьмовым, и оно не сработает, если я изменю некоторые другие переменные, но оно сделает работу для этого случая.
Есть идеи, что может быть причиной?

В случае, если кому-то интересно: есть только 3 других случая, когда rC изменяется, и это еще один rC + = 1 и rC = 0 (init и сброс позже). Нет ни где, ни где-то рядом с rC + = 1; Кроме этого, rC только для чтения, а не для редактирования.

-3

Решение

Значение в вашей переменной почти наверняка было указано вашим компилятором в попытке помочь вам понять, что она неинициализирована. 0xCC (204 в десятичном виде) обычно используется для автоматических / локальных / «стековых» переменных. Я не знаю, как ваш код, который, кажется, показывает инициализируемую переменную, связан с выводом, который, как вы утверждаете, был создан. Я предлагаю вам пересмотреть свой вопрос и убедиться, что вы публикуете минимальный, полный и поддающийся проверке пример вашей проблемы.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]