글쓸 꺼리를 준 친구 녀석에게 감사를 ㅋㅋ
간단하게 설명을 하자면,
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 |