【发布时间】:2015-08-08 15:26:58
【问题描述】:
我正在使用字符的 ASCII 值来执行此操作:abs(string[j-1] - string[j]) 并将其存储在整数数组“arraynum2”中。 ('string' 包含 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, 0, 673946096, 32730。
谁能解释我做错了什么或我没有看到什么?
【问题讨论】:
-
请贴一个小,编译干净,显示问题代码。然后我们可以正确地帮助你。事实上,有几个关键的未公开细节,例如:1)长度值 2)字符串 [] 的定义。如果 sizeof(string) 等于长度,则代码访问超出 string[] 末尾的内存。 IE。运行时问题需要可运行的代码。