繁体   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