Почему созданные переменные не равные нулю в c++?
Потому что вы посчитали бредом главу учебника по C++ про создание переменных и инициализацию оных. При создании переменной в стеке на С++ -  ячейка памяти, на которую смотрит переменная не меняет своего значения. Поэтому там мусор встретить можно на раз. если для вас важно начальное значение переменной - инициализируйте переменную ВРУЧНУЮ)
используйте универсальную инициализацию:int a{};
теперь a = 0