我使用字符的ASCII值來執行此操作:abs(string[j-1] - string[j])
並將其存儲在整數數組'arraynum2'中。 ('字符串'可容納4個字符)爲什麼我的數組打印的數字與分配過程中打印的數字不同?
for(int j = length; j > 0; j--) {
int num = 0;
number2 = abs(string[j-1] - string[j]);
printf("second %d\n", number2);
arraynum2[num] = number2;
printf("second %d\n", arraynum2[num]);
num++;
}
以上for循環打印正確的數字,如number2 == arraynum2[num]
。
但是,當我打印出來的下一個for循環,不同數量的印刷得到:
for(int k = 0; k < length; k++) {
printf("arraynum2 has: %d\n", arraynum2[k]);
/*
if(arraynum1[k] != arraynum2[k]) {
return 0;
}
*/
}
例如,陣列應包含:122,2,21,2。 但在第二個for循環,它打印出:2,0673946096,32730.
有人可以解釋我做錯了什麼或我沒有看到?
請發表一個小的,乾淨的編譯,顯示問題代碼。然後我們可以正確地幫助你。事實上,有幾個關鍵未公開的細節,例如:1)長度值2)字符串[]的定義。如果sizeof(字符串)等於length,則代碼訪問內存超出string []的末尾。 I.E.運行時問題需要可運行的代碼。 – user3629249