for 루프의 기본 구조는 같은 - 비록
for(initialization; condition; increment or decrement)
그러나 "조건"부분 만이 루프 동작을 제어 처리한다 핵심 부분
. 따라서 다른 두 부분이 구문 상 올바른 경우 컴파일러에서 오류가 발생하지 않습니다.
유효한은 유효한 C 문이며 x
의 값은 변경되지 않으므로 [x <= 100 => 0 <= 100
]이 영원한 경우 무한 루프가됩니다.
또 다시, x++
또는 ++x
은 각각 독립적으로 사용될 때 x = x + 1
으로 처리됩니다. 그러나 x++
은 실제로 후 증가 연산자이며 ++x
은 사전 증가 연산자입니다. 즉, ++x
을 사용하면 x
의 값이 먼저 증가한 다음 x
에 할당됩니다. 반면에 x
의 현재 값은 전체 진술에 x++
으로 사용되며 그 다음에 x
이 증가하고 새 값으로 지정됩니다. 다음의 예 -
#include<stdio.h>
void main()
{
int x=5;
/* Post & Pre-Increment used independently */
x++;
printf("x : %d", x);
++x;
printf("\nx : %d", x);
/* Used with printf() statement */
printf("\nPre-increment of x: %d", ++x);
printf("\nPost-increment of x: %d", x++);
printf("\nPost-increment effect on x: %d", x);
}
출력 봐 : 아직도 당신이 날 다시 회신 할 수없는 경우
x : 6
x : 7
Pre-increment of x: 8
Post-increment of x: 8
Post-increment effect on x: 9
내 설명을 희망은, 당신이 이해 만들었습니다.
"컴파일러가 왜 그런 오류를 발생시키지 않았습니까?"왜해야합니까? 'x + 1'은 완벽하게 유효한 표현식입니다. 그것은 단지 당신이 원하는 효과가 발생하지 않습니다. 경고가 활성화되어 있으면 내 컴파일러가 경고를 발행합니다. – hvd
이 질문은 코드를 묻는 질문이 아닙니다. 질문자는 특정 코드가 작동하지 않는 이유를 알고 싶어합니다. 초보자가 일부 코드가 예상대로 작동하지 않는 이유를 묻는다면, 더 경험 많은 코더에게 단순 할 수 있습니다. 그러나 초보자는 적어도 뭔가를 시도하고 이유에 대한 이해를 요구하고 있습니다. 내가 그걸 화제로 보지 않니? – verbose
내가 찢어졌다. 이것은 준 정당합니다. 내가 실제로 이해한다고 가정 할 때, 대답은 둘 다 동등하게 유용하다는 것이다. 하지만 이것은 x ++가 x + = 1에 대한 짧은 손임을 설명하는 교과서를 읽는 것이 가장 좋습니다. 나는 여전히 주제를 말할 것입니다. SO 질문이 아닙니다. 책으로 돌아 가라, 청년. –