Arrow in for loop
在一些情况下,我看到一个箭头在for循环中使用,比如:
1 2 3
| for(int i = 100; i --> 0;) {
System. out. println(i );
} |
这里发生了什么?
- 这是"转到"运算符。stackoverflow.com/q/1642028/1288
- IntStream.range(0, 100).forEachOrdered(i -> System.out.println(99 - i));
- 你的版本是写for (int i = 99; i >= 0; i--)的一种非常奇怪的方式。
- 我必须警告:虽然这个"操作员"很容易在谷歌上通过简单的搜索查询找到,但这样的代码可能不会立即被读者清除。我强烈建议使用一个"正常"的循环,就像艾略特·弗里希提到的那样。
- 欢迎。我建议您参观帮助中心,特别是阅读关于如何提问的部分。在你提出一个新问题之前,你应该做你自己的研究。
- @Stephenc同意并修改了。
这不是箭头,而是一个减量运算符,后跟一个大于号。
编译器看到的是一个不太清晰的(i--) > 0版本。
- 啊。抓住了。一开始我很困惑,因为我在他们的代码中看到过不止一个人这样做。感谢您的澄清!
- "我在他们的代码中看到过不止一个人这样做。"—告诉他们不要这样做!
- @MP1如果你觉得这有帮助,不要忘记投票和接受这个答案。(我同意斯蒂芬的观点,你已经证明了这一点还不清楚。)
它是后减量运算符和大于符号的组合,这让人困惑和不可读。
和写作一样:
1
| for(int i = 100; (i--) > 0;) { ... } |
也就是说,i --> 0本质上是(i--) > 0。
- 实际上,因为它是后递减的,所以更像是:(i > 0)后接i = i - 1;