2013-08-04 3 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' 변수를 for-scope 밖에 선언하는 것입니다. – Blex

답변

2

declaration 문에서 여러 유형을 선언 할 수 없습니다.

{ 
    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 변수의 "double"선언으로 변환합니다. 먼저 컴파일러는이를 int로 인식하지만 다른 유형을 지정합니다. 그게 왜 당신이 그렇게 할 수 없는지. 컴파일러가 원하는대로 (변수 type = value; another_type another_variable = another_value;)하려고하면 for 구조체를 깰 것이다.

1

물론 새로운 범위를 만들 것입니다,하지만 함수를 작성하는 것이 더 보편적입니다.

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

실제로 기능이 필요한지는 말하기 어렵지만 매우 깨끗하고 자연스러운 방법이라고 생각합니다.