글쓸 꺼리를 준 친구 녀석에게 감사를 ㅋㅋ
간단하게 설명을 하자면,
for문을 돌릴때 어느 시점에서 증가가 이루어지고, ++연산자가 적용되는 시점, 그리고 연산자 우선순위 대한 문제이다.
(개인적으로 이런 문제 싫어 한다. 가독성 지랄 같이 하면 다른 사람이 어떻게 수정하라고 ㄱ-)
아무튼 for문의 ([초기화];[조건];[증가]) 에서 증가문은 마지막 닫히는 } 부분에서 증가가 이루어 지고,
이로 인해서 더해지는 값이 달라지는 현상이 발생이 되게 된다.
65짜리는 2에서 11 까지 더하게 되고
55짜리는 1에서 10 까지 더하게 된다.
같은 i < 11 조건이지만,
증가되고 더해지고, 더해지고 증가됨의 차이가 있기 때문에 결과는 55와 65로 벌어지게 된다.
원본 코드 - 결과 65 짜리
변형된 코드 1 - for문에 초기화 넣어줌
변형된 코드 2 - while문으로 변형
원본 코드 - 결과 값 55 짜리
변형된 코드 1 - for문에 초기화 넣어줌
변형된 코드 2 - for문에 초기화 넣어줌
변형된 코드 3 - goto문으로 변형
간단하게 설명을 하자면,
for문을 돌릴때 어느 시점에서 증가가 이루어지고, ++연산자가 적용되는 시점, 그리고 연산자 우선순위 대한 문제이다.
(개인적으로 이런 문제 싫어 한다. 가독성 지랄 같이 하면 다른 사람이 어떻게 수정하라고 ㄱ-)
아무튼 for문의 ([초기화];[조건];[증가]) 에서 증가문은 마지막 닫히는 } 부분에서 증가가 이루어 지고,
이로 인해서 더해지는 값이 달라지는 현상이 발생이 되게 된다.
65짜리는 2에서 11 까지 더하게 되고
55짜리는 1에서 10 까지 더하게 된다.
같은 i < 11 조건이지만,
증가되고 더해지고, 더해지고 증가됨의 차이가 있기 때문에 결과는 55와 65로 벌어지게 된다.
원본 코드 - 결과 65 짜리
sum = 0 ; i = 1 ; for( ; i<11 ;) sum += ++i ;
변형된 코드 1 - for문에 초기화 넣어줌
for(sum = 0,i=1;i<11;) sum += ++i;
변형된 코드 2 - while문으로 변형
sum = 0 ; i=1; while(i<11) { sum += ++i; }변형된 코드 3 - goto문으로 변형
sum = 0 ; i = 1; while_loop: { if(i<11) ; else break; ++i; sum += i; } goto while_loop:
원본 코드 - 결과 값 55 짜리
sum = 0 ; i = 1 ; for( ; i<11 ; ++i) sum += 1 ;
변형된 코드 1 - for문에 초기화 넣어줌
for(sum = 0,i=1;i<11;++i) sum += 1;
변형된 코드 2 - for문에 초기화 넣어줌
sum = 0 ; i=1; while(i<11) { sum += 1; ++i; }
변형된 코드 3 - goto문으로 변형
sum = 0 ; i =1; while_loop: { if(i<11) ; else break; sum += 1; ++i; } goto while_loop:
'Programming > C Win32 MFC' 카테고리의 다른 글
double형을 int 형으로 출력하면? (0) | 2009.05.15 |
---|---|
전처리기를 이용한 디버깅용 선언문(#define) (0) | 2009.05.15 |
sizeof() 는 언제 계산될까? (0) | 2009.04.22 |
int main(int argc, char *argv[]) 에 대한 짧은 이야기 (3) | 2009.03.24 |
c언어에는 cp() 가 없다? (0) | 2009.03.16 |