0

for 문이 실행될 때 사전 증가 연산자를 사용하기 때문에 counter 변수의 값을 1 씩 증가시켜야합니다.

#include <stdio.h>
int main (void)
{
    unsigned int counter ;
    for ( counter = 1; counter <= 10; ++counter /*here is problem*/) {
        printf( "%u\n", counter );
    }
}

문제 -

프로그램이 실행될 때 카운터 변수의 값은 처음에 2 대신 1입니다.


  • 사전 또는 사후 증가 여부에 상관없이 여기서 아무런 차이가 없습니다. 첫 번째 루프가 끝날 때까지는 발생하지 않습니다. 부작용이 없기 때문에,++counter와 같다counter++. - Weather Vane
  • for ( counter = 1; counter++ <= 10;) - EOF
  • 왜 그것이 2라고 생각합니까? - immibis
  • 증분 코드가 실행됩니다.각 루프 반복. 나.그만큼printf. 증분 표현식의 결과를 사용하지 않으므로 사전 또는 사후 증가 연산자를 사용하더라도 아무런 차이가 없습니다. 이는 표현식의 값에만 영향을줍니다 (예 :x = ++counter;x = counter++; - Tom Karzes
  • 이 C 질문이 Java 질문의 중복으로 표시된 이유는 무엇입니까? - Pang

3 답변


1

안에for고리

for(first statement; second statement; third statement){//...}; 

일반적으로 사용되는 세 번째 명령문갱신, 각 반복의 끝에서 실행되므로 변수counter~ 될거야.1첫 번째 반복 동안2첫 번째 반복의 끝에서.


당신이counter반복이 시작될 때 증가 할 변수를 사용한 다음 사용해보십시오.++counter루프의 두번째 문장에서 이런 식으로 :

for ( counter = 1; ++counter <= 10;)

이유 :

왜냐하면 for 루프는 사전 테스트 루프이고 일반적으로 두 번째 구문 인 조건은 각 반복의 시작에서 확인되기 때문입니다. 이제 너의counter각 반복의 시작에서 증가합니다.


0

for 문이 실행될 때

처음으로 for 루프의 세 번째 문은 검사되지 않습니다. for 루프에 지정된 증가 연산자 나 조건을 사용하지만

루프를 반복 할 때 반복문을 시작한 다음 세 번째 구문 for for 루프에서 증분 또는 감소 연산자를 사용하면 작동하고 for 루프의 세 번째 구문에서 조건을 사용하면 프로그램이 끝나서 무한 루프가 발생하지 않습니다.


0

카운트가 2에서 시작되도록하려면 for 루프에서 count를 다음과 같이 초기화해야합니다.

for ( counter = 2; counter <= 10; counter++) {
    printf( "%u\n", counter );
}

C는 다음과 같은 구문을 사용합니다.for loops:

for ( init; condition; increment ) {
   statement(s);
}

여기서 init 부분은 초기화를 수행하는 부분입니다.

연결된 질문


관련된 질문

최근 질문