我认为可以在一个变量中声明多个变量for
loop:
for (int i = 0, char* ptr = bam; i < 10; i++) { ... }
但我刚刚发现这是不可能的。 GCC 给出以下错误:
错误:“char”之前应有不合格的 id
你真的不能在一个变量中声明不同类型的变量吗?for
loop?
您可以(但通常不应该)使用本地结构类型。
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 解决了以下问题结构化绑定 https://en.cppreference.com/w/cpp/language/structured_binding:
using namespace std::literals::string_literals;
for ( auto [ i, status ] = std::tuple{ 0, ""s }; status != "done"; ++ i )
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)