我在C ++中知道你可以在FOR中的变量上声明,例如:
for(int i=0; i<10; i++)
有没有办法在for中声明另一个变量?这对我不起作用:
for(int i=0, char Ch='J'; i<10; i++)
答案 0 :(得分:8)
简单的解决方案是在for
:
{
char Ch = 'j';
for (int i = 0; i < 10; i++)
{
}
}
答案 1 :(得分:8)
您可以使用std::pair
:
for (std::pair<int, char> p(0, 'j'); p.first < 10; p.first++)
{
}
答案 2 :(得分:5)
不,你不能。你可以这样做:
char Ch='J';
for(int i=0; i<10; i++)
问题是要声明一个不同类型的变量,你需要一个分号(;
)来分隔这两个语句 - 逗号(,
)声明一个相同类型的变量。但分号在for
标题中有不同的含义。
如果您担心范围,也可以将其括在一个区块中。
答案 3 :(得分:4)
答案是否定的,你可以在foor循环中声明只有一种类型。但是,类型可以是一个结构,所以这个限制有一个奇怪的黑客:
int main()
{
for (struct {int i; char c; } s = {0, 'A'};
s.i < 26; ++s.i, ++s.c) {
std::cout << s.c; // prints the alphabet
}
}
但这是你不应该做的事情,只需在循环之前声明你需要的变量:)
int main()
{
{
int i = 0;
char c = 'A';
for (; i < 10; ++i) { /* ...*/ }
}
}
注意额外的一组parantheses - 如果这些名称与周围范围内的变量冲突,你可以使用它们来限制变量的范围。
答案 4 :(得分:1)
您可以声明另一个变量,但只能声明相同的类型,以下是有效的:
for(int i=0, Ch='J'; i<10; i++)
但Ch
现在是int
。
答案 5 :(得分:1)
是和否。
在;
之间,您可以使用,
执行任何操作,因此可以执行以下操作:
for(int i=0, j=10; i<5; ++i,--j) { ... }
但如果您需要具有不同类型的变量,则无法通过分隔子声明所需的;
来完成此操作。
请注意,即使是C ++ 11 auto也无济于事:
#include <iostream>
using namespace std;
int main()
{
for(auto i=0, c = "abcd"; i<3; ++i,++c)
cout << *c;
cout << endl;
return 0;
}
导致编译错误:
inconsistent deduction for 'auto': 'int' and then 'const char*'
答案 6 :(得分:0)
您可以使用“,”。
for(int i=0,x=0; i<x; i++)
...
我想说int i = 0是在循环之外执行的... i的定义是在进入循环之前执行的。
答案 7 :(得分:0)
您无法为其他变量重新声明数据类型,请尝试以下方法:
for(int i = 0, j = 10; i < x; i++) {}