Label 사용

프로그래밍/Embedded 최적화 과정 2007/01/22 23:47 게으른 엔지니어
[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
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)
TAG ,
받은 트랙백이 없고, 댓글이 없습니다.

댓글+트랙백 RSS :: http://www.cipher.pe.kr/tt/cipher/rss/response/116

댓글+트랙백 ATOM :: http://www.cipher.pe.kr/tt/cipher/atom/response/116

트랙백 주소 :: http://www.cipher.pe.kr/tt/cipher/trackback/116

트랙백 RSS :: http://www.cipher.pe.kr/tt/cipher/rss/trackback/116

트랙백 ATOM :: http://www.cipher.pe.kr/tt/cipher/atom/trackback/116

댓글을 달아 주세요

댓글 RSS 주소 : http://www.cipher.pe.kr/tt/cipher/rss/comment/116
댓글 ATOM 주소 : http://www.cipher.pe.kr/tt/cipher/atom/comment/116
[로그인][오픈아이디란?]