我认为可以在 for
循环中声明多个变量:
for (int i = 0, char* ptr = bam; i < 10; i++) { ... }
但是我才发现这是不可能的。 GCC 给出以下错误:
error: expected unqualified-id before 'char'
真的不能在for
循环中声明不同类型的变量吗?
最佳答案
您可以(但通常不应该)使用本地结构类型。
for ( struct { int i; char* ptr; } loopy = { 0, bam };
loopy.i < 10 && * loopy.ptr != 0;
++ loopy.i, ++ loopy.ptr )
{ ... }
自 C++11 起,您可以更优雅地初始化各个部分,只要它们不依赖于局部变量即可:
for ( struct { int i = 0; std::string status; } loop;
loop.status != "done"; ++ loop.i )
{ ... }
这几乎足以真正使用。
C++17 用 structured bindings 解决了这个问题:
for ( auto [ i, status ] = std::tuple{ 0, ""s }; status != "done"; ++ i )
关于c - 如何在 C 中的 for (;;) 循环中声明多个变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3348766/