14
一部のプラットフォームでこのforループが終了し、他のプラットフォームでは終了しないのはなぜですか?
最近Cを学び始め、Cを題材にした授業を行っています。私は現在ループで遊んでいて、説明の方法がわからない奇妙な動作に遭遇しています。 #include <stdio.h> int main() { int array[10],i; for (i = 0; i <=10 ; i++) { array[i]=0; /*code should never terminate*/ printf("test \n"); } printf("%d \n", sizeof(array)/sizeof(int)); return 0; } Ubuntu 14.04を実行している私のラップトップでは、このコードは壊れません。それは完了するまで実行されます。CentOS 6.6を実行している私の学校のコンピューターでも、問題なく動作します。Windows 8.1では、ループが終了することはありません。 さらに奇妙なのは、forループの条件を次のように編集するi <= 11と、コードがUbuntuを実行しているラップトップでのみ終了することです。CentOSとWindowsでは終了しません。 メモリで何が起こっているのか、同じコードを実行している異なるOSが異なる結果をもたらす理由を誰かが説明できますか? 編集:forループが範囲外になることを知っています。わざとやってます。OSやコンピューターによって動作がどのように異なるのかがわかりません。