2014-08-24 3 views
0

Я использую следующий код в C++Как добавить данные массива и отобразить их в C++?

#include <iostream> 

using namespace std; 

int functionIs(); 

int main() 
{ 
    functionIs(); 
    return 0; 
} 

int functionIs() 
{ 

    int value[3]; 
    value[0] = 0; 

    for (int i = 0; i < 3; i++) 
    { 
     value[i] += i + 1; 
    } 

    for (int k = 0; k < 3; k++) 
    { 
     cout << "Value = " << value[k]; 
     cout << endl; 
    } 

    return 0; 
} 

Выход:

Значение = 1

Значение = 2

Значение = 4197152

Что не так?

Заранее спасибо.

+1

Чтение неинициализированных переменных - это неопределенное поведение. – chris

+2

Тот факт, что второе значение - '2', - просто удача. Когда цикл начинается, вы должны думать о том, что ваш массив содержит '{0, ???, ???}', поскольку вы никогда не инициализировали 'значение [1]' или 'значение [2]'. Другой компилятор, другой компилятор * установка *, другая объявленная переменная, а второе значение будет совершенно другим. –

+0

Спасибо @PaulRoub. –

ответ

2

Вам необходимо присвоить значение каждому элементу в массиве value. Вы только дает первый элемент значение 0:

Value[0] = 0; 

Если не добавить к тому, что было в памяти месте value[i] капелька этот код:

Value[i] += i + 1; 
0

Я думаю, что вы пытаетесь добавить один к предыдущее значение в массиве, не добавляйте i+1 к каждому значению в массиве. Попробуйте изменить первый цикл на:

value[0]=0; 
for (int i=1; i<3; i++) { 
    value[i] = value[i-1]+1; 
} 
0

Доступ к неинициализированным переменным не определен, как уже указано в комментариях. Легче всего инициализирует все элементы массива к нулю будет

int value[3] = {}; 

Помимо: Когда i будет меняться для каждой итерации и элемент присвоенного будет меняться каждый раз, зачем использовать +=, вы может просто назначить = и сделать это.

Смежные вопросы