【问题标题】:C++ for-loop structure with multiple variable initialization具有多个变量初始化的 C++ for 循环结构
【发布时间】:2012-01-09 04:21:25
【问题描述】:

在第二个 for 循环中,我从 gcc 收到以下错误:

error: expected unqualified-id before 'int'

我不确定我错过了什么。我已经查看了 for 循环的外观文档,但我仍然感到困惑。这里有什么问题?

#include <iostream>
#include <vector>

int main() { 
std::vector<int> values; 

for (int i = 0; i < 20; i++) { 
  values.push_back(i); 
}   

std::cout << "Reading values from 'std::vector values'" << std::endl;
for (int i = 0, int col = 0; i < values.size(); i++, col++) {
  if (col > 10) { std::cout << std::endl; col == 0; }
  std::endl << values[i] << ' ';
  }
}

【问题讨论】:

    标签: c++ for-loop


    【解决方案1】:

    尝试在col 之前不使用int

    for (int i = 0, col = 0; i &lt; values.size(); i++, col++)

    【讨论】:

    • 谢谢 - 我完全没有注意到这一点。
    • 我们能否在for循环中的占位符中与变量ij相关的两个条件之间执行逻辑运算?
    【解决方案2】:

    其他人已经告诉您如何解决您注意到的问题。在一个相当不同的说明中,在这个:

    if (col > 10) { std::cout << std::endl; col == 0; }
    

    似乎几乎可以肯定,这里的最后一条语句:col==0; 确实是 col=0;

    【讨论】:

    • 那是真的 - 这是我为这个问题准备的一个简单的测试用例。不错的收获
    【解决方案3】:

    这应该可以解决它

    for (int i = 0, col = 0; i < values.size(); i++, col++) {
      if (col > 10) { std::cout << std::endl; col == 0; }
      std::endl << values[i] << ' ';
      }
    }
    

    变量定义是这样的

    数据类型 variable_name[=init_value][,variable_name[=init_value]]*;

    【讨论】:

    • 最后一句话不是真的。例如,以下是有效的:int w, *x, (*y)(int, int), z;
    • 我同意!我找不到 C++ 标准对变量声明的定义。因此给出了 var 声明的抽象表示。这里的变量名没有严格确认 [a-zA-Z][a-zA-Z0-9]*。它也可以表示 *x,例如int w = 10, *x = NULL;感谢您的澄清! :)
    【解决方案4】:

    逗号后不要声明int,

    for (int i = 0,col = 0; i < values.size(); i++, col++) {
      if (col > 10) { std::cout << std::endl; col == 0; }
      std::endl << values[i] << ' ';
      }
    }
    

    【讨论】:

      【解决方案5】:

      这类似于使用逗号运算符在一行中进行常规的多变量声明/初始化。你可以这样做:

      int a = 1, b = 2;
      

      声明 2 个整数。但不是这个:

      int a = 1, int b = 2;   //ERROR
      

      【讨论】:

        猜你喜欢
        • 2011-04-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多