在FOR循环中声明变量
Declaring variable in FOR loop
我知道在C++中,您可以在FOR内部的变量上声明,例如:
for(int i=0; i<10; i++)
有什么方法可以在for中声明另一个变量吗?这对我不起作用:
for(int i=0, char Ch='J'; i<10; i++)
您可以使用std::pair
:
for (std::pair<int, char> p(0, 'j'); p.first < 10; p.first++)
{
}
简单的解决方案是在for
:之外创建一个范围
{
char Ch = 'j';
for (int i = 0; i < 10; i++)
{
}
}
不可以。你可以这样做:
char Ch='J';
for(int i=0; i<10; i++)
问题是,要声明不同类型的变量,需要用分号(;
)来分隔这两个语句——逗号(,
)声明相同类型的变量。但是分号在for
标头中有不同的含义。
如果您关心作用域,也可以将其包含在块中。
答案是否定的,在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) { /* ...*/ }
}
}
请注意额外的一组副题-如果名称与周围范围中的变量发生冲突,则可以使用它们来限制变量的范围。
您可以声明另一个变量,但只能声明相同类型的变量,以下操作有效:
for(int i=0, Ch='J'; i<10; i++)
但是Ch
现在将是int
。
是和否。在;
之间,你可以做任何事情。,
可以做任何事,所以以下是可能的:
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*'
您可以使用","。
for(int i=0,x=0; i<x; i++)
...
我想说int I=0是在循环之外执行的。。。i的定义在进入循环之前执行。
您不能重新声明其他变量的数据类型,请尝试以下操作:
for(int i = 0, j = 10; i < x; i++) {}
相关文章:
- 在疯狂的部分中声明变量
- 如何在C++中为高分辨率时钟声明变量?
- 在命名空间中声明变量,在 main 中定义它,使其对所有其他文件可见
- CUDA 的性能取决于声明变量
- 如何在不为其声明变量的情况下获取和使用常量值的地址?
- C++声明变量时自动类型推断而不初始化
- 在不同循环中多次声明变量的优点
- 奇怪的错误 C2131 与 constexpr 声明变量
- 是否可以在 "if" 语句中声明变量?
- 在python-ctypes中声明变量并传递给dll函数
- 在递归函数C++中声明变量
- 只有一个定义/声明时标头声明变量的多堆定义错误
- 奇怪的未声明变量编译器错误
- 我在C++程序中声明变量时遇到问题
- 在命名空间中声明变量
- C++ lambda 按值捕获,而无需更早声明变量
- 声明变量以保存字符串列表时的内存分配
- 如何声明C 变量应突变
- 为什么允许在开关语句中声明变量?但不是声明 初始化
- 在同一命名空间中声明变量和函数是否出错?[C++]