[완료] 음수 char 값이 int로 type casting할 때의 문제입니다.
글쓴이: ktd2004 / 작성시간: 금, 2010/12/10 - 2:48오후
테스트한 소스는 다음과 같습니다.
char ch = 0xff; int i = ch; printf("%d\n", i);
I386에서 gcc-4.4.5 버전에서는 출력이 -1이 나옵니다.
그런데 gcc-4.1.2(powerpc cross compile)에서는 255가 나옵니다.
컴파일러 옵션은 둘 다 같습니다.
* -Wall -Wextra -O2
이걸 어떻게 이해해야 할까요?
powerpc용 cross compiler의 버그로 봐야할까요?
답변 부탁드리겠습니다.
감사합니다.
Forums:
암용 네이티브 gcc 4.4.5 에서도 똑같이
암용 네이티브 gcc 4.4.5 에서도 똑같이 255가 나오네요...
타입캐스팅이 아키텍쳐마다 다른가...
답변 감사드립니다. 문제의 원인은 char가
답변 감사드립니다.
문제의 원인은 char가 powerpc에서는 "unsigned char"로 처리되어서 발생하는 문제였습니다.
* http://stackoverflow.com/questions/4406447/gccv4-1-2-cross-compiler-integer-promotion-problem
ARM 도 마찬가집니다. 그래서 모든 것을
ARM 도 마찬가집니다.
그래서 모든 것을 -fsigned-char (맞는지 모르겠습니다) 옵션을 줘서 컴파일합니다.
char 의 부호는 정해져 있지 않습니다. K&R
char 의 부호는 정해져 있지 않습니다.
K&R 2판 2.2 Data Types and Sizes 에 보면,
라고 합니다.
언제나 삽질 - http://tisphie.net/typo/
프로그래밍 언어 개발 - http://langdev.net
댓글 달기