embeded/Cortex-M3 Ti2013. 2. 5. 10:44
unsigned 를 int로 변경할때 코드상의 문제였나 해서 테스트를 해봤는데 -_-
헐.. 머야 이거.. 컴파일러 특성인가?

int t1,t2,t3,t4;
unsigned char t9=-1;

t1 = t9;
t2 = (char)t9;
t3 = (int)t9;
t4 = (int)(char)t9;
		
printf("%d %d %d %d",t1,t2,t3,t4);
//255,255,255,255

아무튼, cortex-m3 + keil 에서는 일단
음수일 경우(MSB가 0x80 이면)
if(t9 & 0x80) t1 = t9 | 0xFFFFFF00;
else t1 = t9;

이런식으로 구현해서 써야 할 듯 -_-

2013/02/04 - [Programming/C++ / STL] - unsigned char -> int 변환 주의사항

---
추가로 테스트 해보니 unsigned char가 아닌 char 일 경우에도
up convert시 음수에 대해서 제대로 키워주지 못하는 문제가 있다.
KEIL 컴파일러 문제이려나? 
Posted by 구차니

댓글을 달아 주세요

  1. 응??
    제대로 컴파일 된거 아닌가요?

    2013.06.21 13:13 [ ADDR : EDIT/ DEL : REPLY ]