Очень странный вывод, который я получил от int x [3]; - PullRequest
0 голосов
/ 15 октября 2018

Итак, я набрал код ниже на C ++

#include <iostream>
using namespace std;
int main() {
    int x[3];
    cout << x[1] << endl;
    return 0;
}

, и когда я его запускаю, он выводит -272632344 вместо 0. По какой-либо причине?

Ответы [ 2 ]

0 голосов
/ 15 октября 2018

В инициализация по умолчанию ,

, если T - это тип массива, каждый элемент массива инициализируется по умолчанию;

Тогда

в противном случае ничего не делается: объекты с автоматической продолжительностью хранения (и их подобъекты) инициализируются неопределенными значениями.

Попытка распечатать эти неопределенные значения приводит к неопределенное поведение .

Если вы хотите, чтобы все элементы были инициализированы нулем, вам может потребоваться совокупная инициализация , например,

int foo [3] = {}; // all the elements will be value-initialized to zero
int foo [3] {};   // same as above
0 голосов
/ 15 октября 2018

Массив не инициализирован, он получает случайные значения, находящиеся в данный момент в памяти.

Вы можете инициализировать массив следующим образом:

int foo [3] = { 0, 0, 0 };

Также см. Раздел «Инициализация массивов» here :

По умолчанию обычные массивы локальной области видимости (например, объявленные внутри функции) остаются неинициализированными.Это означает, что ни один из его элементов не имеет какого-либо конкретного значения;их содержимое не определено в тот момент, когда массив объявлен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...