BLOG main image
전체 (276)
[Computer] (42)
[Programming] (62)
[DBMS] (26)
[Operating System] (21)
[Study English] (8)
[For money] (28)
[Interest] (89)
«   2009/11   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30          
77890 Visitors up to today!
Today 82 hit, Yesterday 46 hit
'일처리방식'에 해당되는 글 1건
[폭주기관차, 2007/02/22 13:00, [Programming]/Visual C++ API/MFC]
    int a = 1;

    printf("%d %d %d %d\n", ++a, ++a, ++a, ++a);


어떤 결과 값이 예상 되는가?
아래 결과는 Visual C++ 6.0에서 수행한 결과이다.

결과 값:
  5 4 3 2


이 것은 변수가 좌측에서 부터 수행되는 것이 아니라 우측에서 부터
좌측으로 수행이 된다는 것이다.

a = 1 + 2 + 3 + 4
라는 공식이 있으면 뒤에서부터 3+4 한 후 결과 값 2 + 7, 결과 값 1 + 9에서
결과 값 10을 도출해낸 다는 것이다.

이것을 모르면 나중에 버그나도 원인을 찾기 꽤 까다롭게 된다.
좌측 부터 수행되는 줄 알고 아래와 같이 수행 했다면...
int a = 3;

gotoxy( ++a, a );


사실 개발자는 gotoxy( 4, 4 )가 호출되길 원했었지만 위의 코드는 매개변수에
gotoxy( 4, 3 )이 들어가게 된다.

뭐 사실 이 방식은 컴파일러에 따라 좌측부터 수행되는 것이 있고 하기 때문에
아래와 같이 쓰는 것이 훨씬 더 좋은 코드라 할 수 있다.
int a = 3;

++a;

gotoxy( a, a );


무조건 코드를 어렵게 한다고 좋은 것이 아니다.
혼동이 될 것 같은 것은 저런식으로 표기를 해야 나중에 유지보수도 편하고, 컴파일러를
옮겼을 때 원하는 결과 값을 얻기 쉽다.

우측에서 좌측으로 수행하는 순서는 언어에 따라 다르지 않고 컴파일러에 따라 다릅니다.
Turbo C++과 볼란드 C++에서의 결과 값이 다를 수도 있습니다.

Trackback Address :: http://kongmks.cafe24.com/trackback/136
Name
Password
Homepage
Secret
*1