为什么 Java、C 和 C++(可能还有其他语言)不允许在 for 循环变量上使用一种以上的类型?例如:
for (int i = 0; i < 15; i++)
在这种情况下,我们有一个循环变量 i,它是循环计数器。
但我可能想要另一个变量,其范围仅限于循环,而不是每次迭代。例如:
for (int i = 0, variable = obj.operation(); i < 15; i++) { ... }
我将obj.operation()
返回数据存储在其中,variable
因为我只想在循环中使用它。我不想variable
被保存在内存中,也不想在循环执行后保持可见。不仅可以释放内存空间,还可以避免因错误使用variable
.
因此,循环变量很有用,但由于其类型限制而没有得到广泛支持。想象一下,该operation()
方法返回一个 long 值。如果发生这种情况,我将无法在不强制转换和丢失数据的情况下享受循环变量的优势。以下代码无法在 Java 中编译:
for (int i = 0, long variable = obj.operation(); i < 15; i++) { ... }
同样,有人知道为什么存在这种类型限制吗?