2013-08-04 57 views
1

我试图声明和初始化范围内的不同类型的变量。 喜欢的东西:范围内多变量声明和初始化

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

但是编译器(GCC)返回我的错误。

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

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

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

但我正在寻找的东西干净,因为变量u仅用于内部的作用域。 所以,

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

最简洁的方法可能是将其作为一个新的范围,并将'u'放在循环之外。 – chris

+0

得到了,唯一的(丑陋的)方法是使用结构。在这种情况下,我唯一能做的就是在范围外声明'u'变量。 – Blex

回答

2

不允许在declration语句中声明多个然后一个类型。包含范围远程接近for循环中u对应的唯一方法是类似的东西:

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

你要想想,如果你在代码中的另一部分在声明这些变量。 如果共享该类型,则可以在同一行中声明尽可能多的变量。 您可以声明: int a = 3,b = 3; 但'''指出这种类型声明的结尾。如果你尝试这样做: int a = 3,double b = 3.4; 正如您希望编译器将其翻译为b变量的“双”声明。首先编译器将它识别为一个int,但是然后你指定了另一个类型。这就是为什么你不能这样做。如果你试图按照你的编译器所希望的那样去做(type variable = value; another_type another_variable = another_value;),你会打破这个结构。

1

当然创建一个新的作用域会做,但编写一个函数是更常见的方法。

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

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