#include <stdio.h>
int main()
{
int i = 0;
int arr[] = {1,2,3,4,5,6,7,8,9,10};
for(i = 0;i <= 12; i++)
{
arr[i] = 0;
printf("ok ");
}
return 0;
}
这段代码会导致死循环的原因是在for循环中,循环条件 i <= 12
超出了数组 arr
的索引范围。数组 arr
的长度是10,索引范围是从0到9,而循环条件中的 i
从0开始递增,当 i
的值增加到10时,会超出数组的索引范围,导致访问了不存在的内存地址,从而引发未定义的行为。
由于数组越界访问是一种未定义行为,编译器无法检测到这个错误,因此程序会继续执行下去,不断地访问不存在的内存地址,导致死循环。