Во время отладки моей программы я заметил, что некоторые элементы моего 2D-массива содержат ненулевые значения.
float Ak[2][2];
Ak[0][0] = 1;
Ak[1][1] = 1;
Когда я запускаю этот код, Ak[0][0]
и Ak[1][1]
равны 1, как и ожидалось, но Ak[0][1]
равно 1,081, что я на самом деле ожидал быть равным 0.
Возможно, это связано с тем, что массивы не инициализируются неявно. Но всегда ли это так? Должен ли я всегда инициализировать свои массивы, когда мне нужно определенное поведение, или есть случаи, когда компилятор делает это автоматически? Это зависит от компилятора?
И почти самый важный вопрос: Где указано это поведение? (Мне нужна цитата для моей диссертации)
Локальные переменные не имеют инициализации по умолчанию. Они с такой же вероятностью будут содержать 0, как и любое другое, казалось бы, случайное значение. Это относится как к массивам, так и к обычным переменным. Вы можете прочитать сводку правил инициализации для различных классов переменных здесь.
Локальные нестатические переменные не инициализированы. Локальные статические переменные неявно инициализируются нулем, как и нелокальные переменные.