簡體   English   中英

C編程,這是一個無限循環嗎?

[英]C programming, Is this an infinite loop?

如果以下幾行是編譯程序的一部分,會發生什么?

void main() {
    int x = 5;
    while (x == 5); 
}//end main

我相信是的,我已經編譯了它,並且屏幕保持不變,我也嘗試在while語句后添加

int y = 10;
printf("%i", y);

然后結束主。 但是它從不打印。 所以我相當確定它是一個無限循環,但我只想確定。

是的,這是一個無限循環,因為永遠不會滿足退出循環的條件:因為變量 x 在循環內永遠不會改變,循環的條件將始終為真。

是的,這是一個無限循環。 請記住,當條件為真時,while 循環將繼續。 由於 5 將始終等於 5,因此條件將始終為真,即使您不在 while 循環中執行任何操作。

是的,但在某些情況下它實際上可能會離開循環:

  • 有一個線程可以更改 x 變量。
  • 外部程序修改程序存儲器。
  • 正如 tadman 所說,內存本身會發生位翻轉,這不太可能,但也有可能。

肯定還有其他情況可以結束循環,但我能想到的就是這些。

如果您有興趣,可以嘗試使用 Cheat Engine 更改 x 的值。

嘗試:

void main() {
    int x = 5;
    while (x == 5){
        printf("%d\n", x);
    } 
}

對雙打使用格式 %d

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM