例如,會發生什麼,如果我說:在C中,當for循環的條件在開始時沒有滿足時會發生什麼?
for(i = 2; i < 2; i++)
顯然,這是一個無用的循環,但也許I = A,A是由別的設置。那麼在這種情況下會發生什麼?
例如,會發生什麼,如果我說:在C中,當for循環的條件在開始時沒有滿足時會發生什麼?
for(i = 2; i < 2; i++)
顯然,這是一個無用的循環,但也許I = A,A是由別的設置。那麼在這種情況下會發生什麼?
循環的迭代都不會執行。
實際上這種循環(條件是所述條件沒有副作用)
for(i = 2; i < 2; i++) { /* ... */ }
相當於本聲明
i = 2;
的for循環的條件每次迭代之前檢查,包括第一個;所以你的循環體將永遠不會被執行。
for循環的工作方式是它檢查的條件(在你的情況i < 2
)和執行情況立即失敗,無論是{ }
或任何代碼之間在以下幾行
當你在初始化i
到2
沒有執行。
實質上,內部的任何代碼都不會執行,因爲循環不會執行。
在for
循環中,在第一次迭代之前評估條件。這意味着在你的例子中,循環的內容不會被執行,因爲i
已經大於或等於2
。
實施例的代碼路徑:
i = 2
。i < 2
。i
仍然會被修改,但是,因爲變量初始化(即i = 2
)仍然發生在條件被檢查之前。
難道你不能在大約兩分鐘內寫出一些代碼來回答這個問題嗎? –
https://ideone.com/guKsdG – PSkocik
@KenWhite我的編譯器正在行動,否則我會測試它。 – RothX