逗号运算符用法

时间:2012-11-10 09:24:49

标签: c++ visual-studio comma comma-operator

  

可能重复:
  Is it possible to declare two variables of different types in a for loop?

考虑以下代码:

for( std::vector<std::string>::iterator it = myVec.begin(), int i = 3; it < myVec.end(); it++, i++ )
{
// some operations with the vector
}

我很惊讶MSVC 2010给了我编译循环的错误。 是否使用MSVS禁止的逗号运算符?

这是一个错误:

error C2062: type 'int' unexpected 
error C2143: syntax error: missing ';' before ')'

如果我试图推动&#34; int i&#34;定义出循环,我得到:

error C2440: 'initializing': cannot convert from 'int' to 'std::vector'

2 个答案:

答案 0 :(得分:7)

comma operator应该有两个表达式作为操作数。在其右侧,您有int i=0,它看起来像声明,而不是表达式

如果删除int,则表示名为std::vector<std::string>::iterator的{​​{1}}变量,并使用i分配或构建变量,但不进行类型检查。

在实践中,在3循环之前(和之外)移动int i=3;声明。

答案 1 :(得分:0)

你不能在for循环中声明两种不同的数据类型,所以你需要在循环内推送vector或i,但你可以赋值