c - 这个反向循环在 C 中是否正确?
问题描述
有时在 javascript 中你可以看到像这样的反向循环:
for ( let i =10; i--;) { ... }
在i
循环内获取从 9 到零的值。当> 0时,
布尔评估i--
为真,
然后循环内部的值,
第三个参数保持为空,因为之前已经完成了 的递减。i
(i-1)
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 是无符号的。
推荐阅读
- python - 如果其中一项测试在 Python 中花费的时间超过 x 秒,如何退出覆盖运行过程?
- google-sheets - ARRAYFORMULA() 生成的值的总和不正确(Google 表格)
- neo4j - 为什么需要限制不指定边类型的数据插入?
- c++ - Could NOT find OpenAL(missing: OPENAL_LIBRARY OPENAL_INCLUDE_DIR)
- excel - Object variable or With block variable not set in Find method
- javascript - 我无法在按钮(onClick())上的函数调用中访问地图函数的索引,它在地图()的范围内,代码如下
- tensorflow - 使用 logits 时的负对数可能性
- javascript - 将 JavaScript 重用于常见 html 元素的最佳方法
- django - 如何使用您自己的模型 Django 注册用户
- r - 从 R 中的拟合主题模型创建 JSON 对象(用于 LDAvis)