2010-11-19 3 views

답변

10

루프 초기화 프로그램에서 하나의 명령문 만 사용할 수 있습니다. 그래서 당신은 루프 밖에서 바르 중 적어도 하나를 선언해야합니다 : 그것은 함께 일하면

int i; 
double j; 
for (i = 0, j = 0.0f; i <= 30; i++, j++) 

을 두 INT의 당신은 아마 (여러 변수를 선언) 하나의 문부터 유효 for (int i = 0, j = 0; ...)을 사용 사용.

+0

그래서 다음은 대한 에 문제가없는 올 방법 (INT I = 0, j = 0; i <= 30; i ++, j ++) – Marty

+0

@marty : 내 편집보기 – ThiefMaster

0

루프 전에 선언하는 것은 어떨까요? 변수 선언의 쉼표는 같은 유형을 분리 할 뿐이며 혼란스럽게 읽습니다. 말할 것도없이 정확히 언제 일어날지를 아는 것이 어렵습니다. Btw, "++"는 기술적으로 정확한 값을 산출하지 않습니다 (int와 같이 보장되지 않습니다). 왜 그렇게해야하는지 궁금합니다.

int i; 
double j = 0.0f; 
for(i=0; i<=30; i++) { 
    j += 1.0f; 
    // other stuff 
} 

어쨌든 읽기 쉽습니다. 특히 다른 사람들을 위해, 아직 무엇을하고 있는지 익숙하지 않은 경우.

0

나는 객관적인 c 프로그래머가 아니지만 내가 알고있는 루프는 그 사이에 쉼표로 선언 할 수 없다는 것이다.
int i, double j;은 허용되지 않습니다. 그래서 당신이해야 할 일은 double이나 integer를 사용하기로 결정하는 것입니다.
즉, for 루프의 괄호 안에 수행 한 것과 같이 선언 할 수있는 방법이 없습니다.
int i, j; 또는 double i, j 중 하나를 사용하십시오!

1

for 루프의 이니셜 라이저 부분은 하나의 문장 일 수 있습니다. 하나의 명령문에 공통 유형의 여러 변수를 선언 할 수 있습니다 (예 : int i, j;,하지만이 방법으로 여러 유형의 여러 변수를 선언 할 수는 없습니다.

{ 
    double j = 0.0; 
    for (int i = 0; /*test*/; /*at-end statement*/) { 
     /* body */ 
    } 
} 

또한 해결할 수 있습니다 : 당신이 for -loop의 몸에 두 값을 제한하려면, 당신이 그렇게 같은 선언과 단일 화합물 문에서 for 루프를 둘러싸 수

이 익명의 구조체 (이것은 단지 지점을 모호하지만, 그것은 당신이 원하는 것을 정확하게 하는가)를 사용하여 :

for (struct {int i; double j;} ctx = {0, 0.0}; /*test ctx.i or ctx.j*/; /*at-end*/) { 
    /*body*/ 
} 
관련 문제