Почему созданные переменные не равные нулю в c++?

Привет!
Есть вот такой код на с++:

#include <iostream>
using namespace std;

int main()
{
	int a,b,c,d;

	cout << "a = " << a << "\n"; // a = 379757328
	cout << "b = " << b << "\n"; // b = 32764
	cout << "c = " << c<< "\n"; // c = 0
	cout << "d = " << d << "\n"; // d = 0

	return 0;
}

И мне не понятно, с какой стати переменная a и b равна какому-то числу?
При этом, две другие переменные равны нулю! Ума не приложу, почему так.
  • Вопрос задан
  • 608 просмотров
Решения вопроса 2
@dmitryKovalskiy
программист средней руки
Потому что вы посчитали бредом главу учебника по C++ про создание переменных и инициализацию оных. При создании переменной в стеке на С++ - ячейка памяти, на которую смотрит переменная не меняет своего значения. Поэтому там мусор встретить можно на раз. если для вас важно начальное значение переменной - инициализируйте переменную ВРУЧНУЮ)
Ответ написан
Комментировать
POS_troi
@POS_troi
СадоМазо Админ, флудер, троль.
Не инициализированная переменная не обязана быть равна нулю.
Да по логике как-бы должна но не обязана.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
fuzz0
@fuzz0
используйте универсальную инициализацию:
int a{};
теперь a = 0
Ответ написан
TrueBers
@TrueBers
Гуглю за еду
Учите ассемблер. После него таких вопросов возникнуть в принципе не может.
Изучите, что такое стэк, как он работает, как растёт, как происходит выделение памяти на нём. Лучше для этого использовать какой-нить отладчик наглядный, типа OllyDbg или x64dbg.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы