for-scope内的多变量声明和初始化

时间:2013-08-04 23:07:32

标签: c++ for-loop scope

我正在尝试在for-scope中声明和初始化不同类型的变量。 类似的东西:

for (int i = 0, double u = 1; i < 10; ++i)
{...}

但是编译器(gcc)给我一个错误。

我知道可以使用相同的类型变量(example)执行初始化,但我不知道如何使用不同的变量进行初始化。

当然我可以在循环外声明变量:

double u = 1;
for (int i = 0; i < 10; ++i)
{...}

但我正在寻找干净的东西,因为变量u仅在for-scope中使用。 所以,

  • 我能这样做吗?
  • 如果是的话,我该怎么办?

3 个答案:

答案 0 :(得分:2)

不允许在声明语句中声明多于一种类型。在远程接近for循环的范围内包含u的唯一方法是:

{
    double u = 1;
    for (int i = 0; i < 10; ++i)
    {
        //some code
    }
}// u's scope will end here

答案 1 :(得分:1)

当然创建新的范围会有所作为,但编写函数是更常见的方式。

void foo()
{
    // So this function deals with loop and does something with 'u'.
    double u = 1;
    for (int i = 0; i < 10; ++i)
    { ... }
}

很难说你是否真的需要一个功能,但我相信它是一种非常干净和自然的方式。

答案 2 :(得分:0)

您必须认为您在代码的另一部分中声明了这些变量。 如果共享类型,您可以在同一行中声明任意数量的变量。 你可以声明: int a = 3,b = 3; 但是';'指出此类型声明的结尾。如果您尝试这样做: int a = 3,double b = 3.4; 如您所愿,编译器将其转换为b变量的“双重”声明。首先,编译器将其识别为int,但是您指定了另一种类型。这就是为什么你不能这样做。如果您尝试按照编译器的意愿(类型variable = value; another_type another_variable = another_value;),那么您将打破for结构。

相关问题