C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[57865] Re:[질문] C++ Builder에서 헥사표현이 이상합니다...
김태선 [cppbuilder] 1020 읽음    2009-07-31 14:04
빌더6에서 테스트 해봤는데
이상 없습니다.

void __fastcall TFormMain::FormCreate(TObject *Sender)
{
    char  buf[3] = "\x1\x2\x1";
    char  *msg;
    switch (buf[2]){    // buf는 char의 배열입니다.
        case 0x01:    // A경우
            msg = "1";
            break;
        case '\x02':    // B경우
            msg = "2";
            break;
        default:
            msg = "default";
            break;
    }
    Caption = msg;
}

논리적으로나 그 동안의 컴파일 경험으로 봐도
0x2 == '\x02' == '\x2'
이런 표현은 완전히 같은 것입니다.

디스어셈블을 해봐도 완전히 같은 결과이므로
혹 테스트 환경을 환번 살펴보시고
안된다면 테스트하신 빌더 버전과 소스를 위처럼 조금 더 구체적으로
제시해 보세요.



아~자~~! 님이 쓰신 글 :
: switch~case 구문을 작성 중에 헥사 표현법에서 이상점이 있어서 질문 드립니다.
: 예를 들어
: ///************************************///
: switch (buf[2]){    // buf는 char의 배열입니다.
:     case 0x01:    // A경우
:          break;
:     case '\x02':    // B경우
:         break;
:     default:
:         break;
: }
: ///*****************************************///
: 위의 경우 컴파일 에러는 없지만
: A경우는 인식하지 못하고 default로 갑니다.
: B경우는 인식하고 해당 구문을 수행합니다.
:
: 둘 중에 어느 것이 표준인가요?
: 또 A와 같이 할 수 있는 방법은 없을까요?
: 물론 대부분의 고정된 숫자는 define해서 쓰기는 하지만,
: 지금까지 다른 컴파일러 툴들에서는 이상이 없었는데,
: 처음 있는 일이라 무척 궁금합니다.
:
: --------------------------------------
: 모두 즐거운 하루 되세요....
: 아~자~~!

+ -

관련 글 리스트
57833 [질문] C++ Builder에서 헥사표현이 이상합니다... 아~자~~! 1016 2009/07/29
57865     Re:[질문] C++ Builder에서 헥사표현이 이상합니다... 김태선 1020 2009/07/31
57875         Re:Re:[질문] C++ Builder에서 헥사표현이 이상합니다... 아~자~~! 1070 2009/07/31
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.