范围内的多个变量声明和初始化
Multiple variable declare and initialization inside for-scope
我试图在for范围内声明和初始化不同类型的变量。类似于:
for (int i = 0, double u = 1; i < 10; ++i)
{...}
但是编译器(gcc)返回了一个错误。
我知道可以使用相同类型的变量执行初始化(例如),但我不知道如何使用不同的变量进行初始化。
当然,我可以在循环外声明变量:
double u = 1;
for (int i = 0; i < 10; ++i)
{...}
但我正在寻找一些干净的东西,因为变量u
只在for范围内使用。所以,
- 我能做吗
- 如果是,我该怎么办
不允许在declaration语句中声明多个类型。将u包含在远离for循环的范围内的唯一方法是这样的:
{
double u = 1;
for (int i = 0; i < 10; ++i)
{
//some code
}
}// u's scope will end here
当然可以创建一个新的作用域,但编写函数是更常见的方式。
void foo()
{
// So this function deals with loop and does something with 'u'.
double u = 1;
for (int i = 0; i < 10; ++i)
{ ... }
}
很难说你是否真的需要一个功能,但我相信这是一种非常干净和自然的方式。
您必须像在代码的另一部分中声明这些变量一样思考。如果变量共享类型,则可以在同一行中声明任意数量的变量。您可以声明:int a=3,b=3;但是";"指向此类型声明的末尾。如果您尝试执行以下操作:int a=3,double b=3.4;根据您的意愿,编译器将其转换为b变量的"double"声明。首先,编译器将其识别为int,然后指定另一个类型。这就是为什么你不能那样做。如果您试图按照编译器的意愿执行(类型variable=value;another_type another_variable=another_value;),则会破坏for结构。
相关文章:
- 如何声明特征矩阵,然后通过嵌套循环初始化它
- 在函数内部的声明中初始化数组,并在外部使用它
- 有没有办法一次声明相同类型的多个对象,并通过一个表达式立即使用相同的右值初始化它们?
- 构造函数/函数声明参数列表中的统一初始化
- 使用直接大括号初始化时,C++ 编译错误"声明末尾的预期";"
- 强制使用默认构造函数对成员进行未初始化的声明
- 无法在声明时使用初始值设定项列表初始化常量字符*/字符串数组的向量
- 初始化声明符是 prvalue 表达式吗?
- 智能指针可以单独向前声明和初始化吗?
- 在C++中,如果成员引用在其声明中初始化,为什么需要存储空间?
- C++ 通过函数声明后初始化向量
- public:静态常量字符串声明/初始化问题
- 类模板静态数据成员定义/声明/初始化
- 初始化的多维数组,用声明初始化和声明后初始化有什么区别
- 为什么允许在开关语句中声明变量?但不是声明 初始化
- WIA 2.0 - IWiaDevMgr2::GetImgDlg() - 如何声明/初始化 ppbstrFilePath
- (Qt C++)用值填充QMap,同时声明/初始化
- 变量声明初始化顺序
- 使用static、const、constexpr的全局声明/初始化
- c++中多个文件的声明/初始化问题