1

我正在尝试在 for 范围内声明和初始化不同类型的变量。就像是:

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

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

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

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

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

但我正在寻找一些干净的东西,因为该变量u仅在 for 范围内使用。所以,

  • 我可以做吗?
  • 如果是这样,我该怎么办?
4

3 回答 3

2

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

{
    double u = 1;
    for (int i = 0; i < 10; ++i)
    {
        //some code
    }
}// u's scope will end here
于 2013-08-04T23:24:46.340 回答
1

当然创建一个新的作用域也可以,但是写一个函数是更常见的方式。

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

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

于 2013-08-05T00:10:32.613 回答
0

您必须考虑好像在代码的另一部分声明这些变量。如果它们共享类型,则始终可以在同一行中声明任意数量的变量。您可以声明: int a=3, b=3; 但是';' 指向此类型声明的结尾。如果您尝试这样做: int a=3, double b= 3.4; 如您所愿,编译器将其翻译为 b 变量的“双重”声明。首先编译器将其识别为 int,但随后您指定了另一种类型。这就是为什么你不能这样做。如果您尝试按照编译器的意愿进行操作(type variable=value; another_type another_variable = another_value;),您将破坏 for 结构。

于 2013-08-04T23:29:41.907 回答