#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;
}
Run Code Online (Sandbox Code Playgroud)
首先printf打印1,而另一个printf打印9.i你可以看到我在此期间没有改变.为什么打印9?
Bat*_*eba 10
你指的x[j+1]时候j是5.这超出了数组的范围.
因此,代码的行为是未定义的.(有趣的是,代码的行为与赋值中的x[6]等同j,x[7]正在i和特定的顺序一致,但不依赖于任何一个.)