|
빌더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해서 쓰기는 하지만,
: 지금까지 다른 컴파일러 툴들에서는 이상이 없었는데,
: 처음 있는 일이라 무척 궁금합니다.
:
: --------------------------------------
: 모두 즐거운 하루 되세요....
: 아~자~~!
|