2

可能重复:
是否可以在 for 循环中声明两个不同类型的变量?

考虑这段代码:

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

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

这是一个错误:

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

如果我尝试将“int i”定义推出循环,我会得到:

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

2 回答 2

7

逗号运算符应该有两个表达式作为操作数。在它的右手边,你有int i=0一个看起来像一个声明,而不是一个表达式

如果你删除它int,你就是在声明一个名为并分配或构造它的std::vector<std::string>::iterator变量,它不会进行类型检查。i3

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

于 2012-11-10T09:27:20.420 回答
0

您不能在 for 循环中声明两种不同的数据类型,因此您需要将向量或 i 推入循环中,但您可以分配值

于 2012-11-10T09:28:38.763 回答