Cоединить 2 массива в один через цикл

Решил соединить 2 массива в один через цикл, но почему-то когда он заполняет 1 элемент 2 массива, то печатает 1 элемент 1 массива

int mas_1[2] = {2,2};
int mas_2[2] = {223,231};
int *mas_3 = new int[4];
for (int i = 0; i < 4; i++)
{
    if (i < 2) { mas_3[i] = mas_1[i]; }
    else { mas_3[i] = mas_2[4-i];}
}
for (int i = 0; i < 4; i++)
{
    std::cout <<(mas_3[i])<< std::endl;

}
delete mas_2;
delete mas_1;

Ответы (1 шт):

Автор решения: Harry

Распишите:

for (int i = 0; i < 4; i++)
{
    if (i < 2) { mas_3[i] = mas_1[i]; }
    else { mas_3[i] = mas_2[4-i];}
}

при i = 0 и 1 выполняется mas_3[i] = mas_1[i];, как вы и хотите, но дальше - при i = 2 у вас выполняется mas_3[2] = mas_2[2];, а при i = 3 - mas_3[3] = mas_2[1];.

Так что у вас еще и выход за пределы массива...

Замените 4-i на i-2...

→ Ссылка