我正在運行這個無限的for
循環。爲什麼for
循環在一段時間後終止?爲什麼這個無限循環在一段時間後終止?
for(int i = 10; i > 0; i++) { }
但是,如果我在這個for
循環中打印一些東西,那麼它不會終止。爲什麼這樣?
我正在運行這個無限的for
循環。爲什麼for
循環在一段時間後終止?爲什麼這個無限循環在一段時間後終止?
for(int i = 10; i > 0; i++) { }
但是,如果我在這個for
循環中打印一些東西,那麼它不會終止。爲什麼這樣?
當它達到2,147,483,647時,int
繞回到-2,147,483,648。
這會導致條件i > 0
評估爲false
。
這是在Java中完美定義的行爲:您不能在C或C++中執行此操作。
如果您試圖在循環中打印某些東西,那麼循環的速度會大大降低,並且您可能沒有耐心了。將當前值i
合併到您的輸出中,並親自查看:即使每秒輸出1000次迭代也需要將近一個月的時間才能達到迴繞點!
算術整數運算是以32位精度執行的。當一個操作的結果值大於32位(int變量可以容納的最大值)時,只考慮低32位,並丟棄高位。當MSB(最高有效位)爲1時,該值被視爲負值。 在你的情況下,當它變成負面和條件成爲虛假。
檢查此解決方案的問題: https://stackoverflow.com/a/44376523/5169186 – Oghli