范围内的多个变量声明和初始化

Multiple variable declare and initialization inside for-scope

本文关键字:声明 初始化 变量 范围内      更新时间:2023-10-16

我试图在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结构。