我正在尝试将两个数组附加在一起。{0, 1, 2}
当附加到第二个数组时,第一个数组应该{3, 4, 5}
yield {0, 1, 2, 3, 4, 5}
。在继续之前,让我向您展示我拥有的东西:
#include <iostream>
int main() {
int i = 0;
int arr1[] = {3, 4, 5}, arr2[] = {0, 1, 2};
while (i < 3) {
arr2[3 + i] = arr1[i];
i++;
}
std::cout << std::endl;
for (int i = 0; i < 6; i++) std::cout << arr2[i] << std::endl; // print
}
我认为我实现它的方式是正确的。但我发现,当我打印出新数组 ( arr2
) 的内容时,我得到的是:
0
1
2
-1219315227
-1218166796
134514640
0, 1, 2
是原始数组,但后来3, 4, 5
有一些如何变成这些奇怪的数字。std::cout
然而,这通过我在 while 循环中添加任意语句以某种方式解决:
...
while (i < 3) {
std::cout << 5 << '\n'; // just a random #
arr2[3 + i] = arr1[i];
i++;
}
...
我再次打印数组并且它有效!:
5
0
1
2
3
4
5
我的问题是为什么当我std::cout
在 while 循环中使用语句而不是不这样做时它会起作用,在这种情况下它会给我这些数字?
编辑:
所以事实证明我在这里是未定义的行为。有了这个,我的问题仍然存在:为什么我的代码可以与std::cout
while 循环内的调用一起工作?