for循环中的混合声明

Naw*_*waz 5 c++ for-loop declaration

我想写一个for循环,如下所示; 在初始化部分,我想声明不同类型的变量:

    for (int loop=0, long result = 1; loop <= 10 ; loop++, result *= 2 )
    {
        cout << "2^"<<loop<<"=" << result<<endl;
    }
Run Code Online (Sandbox Code Playgroud)

但它给出错误,意味着它是不允许的.任何解决方案?

Han*_*ant 21

不要写这样的代码.它是速度碰撞代码,有人会在某一天阅读这篇文章然后去哇!并且失去了5分钟的生命,试图找出你为什么这样做.那是他永远不会回来的5分钟,你将无缘无故地欠他.

如果限制结果的范围非常重要,那么使用额外的大括号:

{
    long result = 1;
    for (int loop = 0; loop <= 10; loop++)
    {
        cout << "2^" << loop << "=" << result << endl;
        result *= 2;
    }
}
Run Code Online (Sandbox Code Playgroud)

现在把它放在最上面,你不仅可以编写可读代码而且可以重复使用代码:

void printPowersOfTwo(int from, int to)
Run Code Online (Sandbox Code Playgroud)

  • +看起来肯定比接受的答案好. (4认同)

Any*_*orn 6

就好像你试过:

int loop=0, long result = 1;
Run Code Online (Sandbox Code Playgroud)

其他地方.

你可以这样做:

for (struct { int loop; long result; } vars = { 0, 1};
Run Code Online (Sandbox Code Playgroud)

但是不要