[code type=c]#include <stdio.h>
int main(int argc, char* argv[])
{
int count = 0;
aa:
printf("X\n");
if ( count++ == 5 )
goto bb;
goto aa;
printf("Y\n");
bb:
goto cc;
{
int a = 10;
cc:
printf("%d\n", a);
printf("%x\n", a); --> Visual C++에서 쓰레기 값은 cccccccc 으로 채워짐. 디버깅 목적
goto dd;
}
dd:
;
return 0;
}[/code]
실행 결과
X
X
X
X
X
X
-858993460
cccccccc
--------------------------------
1.
cc:
int a = 10;
으로 사용하면 에러가 난다. label은 항상 statement앞에 쓰여져야 하므로 선언문 앞에 사용할 수는 없다.
2. label은 항상 같은 함수 안에서만 움직일 수 있다.(잘 생각해보면 당연한 얘기)
3. 위의 코드는 int a = 10이 실제로는 초기화가 안되고 선언만 되므로
마지막 출력은 보면 cccccccc로 값이 쓰레기값이 들어 있다.(쓰레기 값을 cccccccc로 쓰는건 Visual C++에서만 그렇게 사용한다.
3.의 경우 역 어셈블 하여 결과 확인하여 보자!!!
http://blog.naver.com/asca99/80013207421
받은 트랙백이 없고,
댓글이 없습니다.



글
댓글을 달아 주세요
댓글 RSS 주소 : http://www.cipher.pe.kr/tt/cipher/rss/comment/116댓글 ATOM 주소 : http://www.cipher.pe.kr/tt/cipher/atom/comment/116