我試圖追加兩個數組在一起。當附加到第二個陣列{3, 4, 5}
時,第一個陣列{0, 1, 2}
應該產生{0, 1, 2, 3, 4, 5}
。讓我告訴你我之前所擁有的東西:std :: cout在一個while循環中的奇怪行爲
#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
有一些如何變成了這些奇怪的數字。然而,這在某種程度上固定我在while循環在這裏添加任意std::cout
聲明:
...
while (i < 3) {
std::cout << 5 << '\n'; // just a random #
arr2[3 + i] = arr1[i];
i++;
}
...
我再次打印陣列和它的作品!:
5
0
1
2
3
4
5
我的問題是爲什麼當我在while循環中使用std::cout
語句而不是不這樣做時,這個工作是正常的,在這種情況下它給了我那些數字?
編輯:
因此,原來我在這裏是不確定的行爲。因此,我的問題仍然存在:爲什麼我的代碼在while循環中使用std::cout
調用?
您正在索引第二個數組的長度。我認爲這是UB? – Borgleader
@Borgleader,確實如此。 – chris
執行此操作的簡單方法是使用'std :: vector'。只需使用「插入」。 – chris