簡體   English   中英

這個反向循環在 C 中是否正確?

[英]Is this reverse loop is correct in C?

有時在 javascript 中,您可以看到像這樣的反向循環:

for ( let i =10; i--;) { ... } 

i在循環內得到從 9 到零的值。
i > 0 時,boolean 對i--的評估為真,
然后是循環內(i-1) go 的值,
第三個參數保持為空,因為i的遞減之前已經完成。

在 C 這應該是:(?)

for (int i =10; i--;) { ... }

我只是想知道這是否可以在 C 語言中被接受(和工作)?

我只想知道它是否可以完成,並給這個 for 循環一個相同的結果:

for (int i =9; i>=0 ;i--) { ... }

是的,您的假設代碼是有效的 C 並且將按預期工作。 但是,請注意輕微的變體

for (unsigned int i = 10; i >= 0; i--) { ... }

這是一個無限循環,因為 unsigned int 不能小於零。 JavaScript 沒有無符號類型,所以這不會在那里發生。

為什么會有人這么寫? 好吧,假設您出於某種原因需要向后壓縮一個字符串,您可能自然會寫

for (size_t i = strlen(s); i >= 0; i--) { ... use s[i] ... }

但是,哎呀, size_t 是無符號的。

for (int i =9; i>=0 ;i--) 
{ ... }

暫無
暫無

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

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