Я забыл нюансы переменных в С++
Переменные изменяются, если их не считывать.
Если попытаться считать, то они перестают изменяться (проверил в Arduino и DevCpp)
Посмотрел в старых проектах - там нет такой проблемы, там спокойно обращался к глобальным переменным, считывал их и перезаписывал, потому никогда с такой проблемой не сталкивался и не задумывался
Единственная разница - там была другая среда (Atmel Studio) неизвестно с какими параметрами компилятора и С++.
Т.е. здесь в примере переменная А локальная, В глобальная, их читают в цикле, С тоже локальная, но её не читают в цикле
#include <iostream>
int* B = new(int);
int main(int argc, char** argv) {
unsigned short A = 0;
*B = 0;
unsigned short C = 0;
while (1) {
A += 1;
*B = *B + 1;
C += 1;
if (A = 0) {};
if (*B = 0) {};
// if (C = 0) {};
std::cout << A << " " << *B << " " << C << std::endl;
}
}