[英]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.