이 질문에는 이미 답변이 있습니다.
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입니다.
안에for
고리
for(first statement; second statement; third statement){//...};
일반적으로 사용되는 세 번째 명령문갱신, 각 반복의 끝에서 실행되므로 변수counter
~ 될거야.1
첫 번째 반복 동안2
첫 번째 반복의 끝에서.
당신이counter
반복이 시작될 때 증가 할 변수를 사용한 다음 사용해보십시오.++counter
루프의 두번째 문장에서 이런 식으로 :
for ( counter = 1; ++counter <= 10;)
이유 :
왜냐하면 for 루프는 사전 테스트 루프이고 일반적으로 두 번째 구문 인 조건은 각 반복의 시작에서 확인되기 때문입니다. 이제 너의counter
각 반복의 시작에서 증가합니다.
for 문이 실행될 때
처음으로 for 루프의 세 번째 문은 검사되지 않습니다. for 루프에 지정된 증가 연산자 나 조건을 사용하지만
루프를 반복 할 때 반복문을 시작한 다음 세 번째 구문 for for 루프에서 증분 또는 감소 연산자를 사용하면 작동하고 for 루프의 세 번째 구문에서 조건을 사용하면 프로그램이 끝나서 무한 루프가 발생하지 않습니다.
카운트가 2에서 시작되도록하려면 for 루프에서 count를 다음과 같이 초기화해야합니다.
for ( counter = 2; counter <= 10; counter++) {
printf( "%u\n", counter );
}
C는 다음과 같은 구문을 사용합니다.for loops
:
for ( init; condition; increment ) {
statement(s);
}
여기서 init 부분은 초기화를 수행하는 부분입니다.
++counter
와 같다counter++
. - Weather Vanefor ( counter = 1; counter++ <= 10;)
- EOFprintf
. 증분 표현식의 결과를 사용하지 않으므로 사전 또는 사후 증가 연산자를 사용하더라도 아무런 차이가 없습니다. 이는 표현식의 값에만 영향을줍니다 (예 :x = ++counter;
대x = counter++;
- Tom Karzes