#include <stdio.h>
int main() {
int x[] = {2, 3, 1, 5, 6, 9};
int j, i, s;
for (i=0; i<6; i++){
if (x[i] % 2 == 1){
break;
}
}
printf("%d", i);
for (j=5; j>1; j--){
x[j+1] = x[j];
}
printf("%d", i);
return 0;
}
首先printf
打印1,而其他printf
打印9。我可以看到,在此期间我没有改变i
。为什么打印9?
答案 0 :(得分:10)
当x[j+1]
为j
时,您会引用5
。那不在数组的范围内。
因此,代码的行为未定义。 (有趣的是,您的代码行为与x[6]
等同于j
,x[7]
为i
以及作业中的特定顺序一致,但是 don& #39; t 依赖于任何一种。)