小编SJ1*_*SJ1的帖子

为什么当C中发生数组越界时我的程序没有进入无限循环

int main(){
   int i;
   int arr[4];
   for(int i=0; i<=4; i++){
      arr[i] = 0;
   }
   return 0;
}
Run Code Online (Sandbox Code Playgroud)
  1. 我在youtube上看了CS107(第13讲)的一个视频,其中展示了这个例子,并通过内存图告诉了为什么上面的程序会导致无限循环。arr[4] 超出范围,应该导致存储 i 的地址并将 i 的值更改回 0,从而导致无限循环。但是当我尝试使用 gcc 编译器在我的 mac 上运行它时,for 循环执行了 5 次(通过插入 printf 检查)。即 i 的值 = 0,1,2,3,4。

c infinite-loop memoryview

1
推荐指数
1
解决办法
413
查看次数

标签 统计

c ×1

infinite-loop ×1

memoryview ×1