그냥 ubuntu gcc로 compile 할 때는 멀쩡하던 것이
android 용으로 ndk-build 를 써서 빌드하니까 엄청난 warning 들이 나왔다.
다른 것들은 뭐 initialize 안한 것 부터해서 그냥 휙휙 고치면 되는 것들이었는데...
warning: comparison between signed and unsigned integer expressions
이 녀석은 조금 골치가 아프다. 아...놔... 누굴까 대체...
그래서!
int 와 unsigned int 를 비교하면 어떻게 되는지 실험해보기로 했다.
구글링으로도 잘 안나오더라...OTL
환경은 64bit ubuntu...그냥 int는 4byte, long은 8byte 이다... 혹시나 해서ㅎ
기억하던대로(?)
int i = -1 는 0xffffffff
unsigne int ui = -1 도 0xffffffff (unsigned 에 -1 넣어도 warning 없이 compile 잘 되는구나;;;)
비교하면 그냥 같다고 나오는구나...
걍 bit 배열만 보고 판단하는 구나.. 그랬구나 OTL 허무...
자 이제 ... 누군가
int x = -1 이라고 하고
unsigned int y 로 받아온 값을 비교하는데..
if( x == y ) goto error;
라고 적어둔 식에서 위에 경고가 뜨는 걸
그냥 type casting 으로 없애도 되는가에 대한 결론을 내보자.
재수없이 y 에 0xffffffff 가 들어왔다면?!
하아 -_-... error 겠구만... 잘 발견하기도 어려운...
일단은 0xffffffff은 안들어오는 것이 보장되는 것 같으니 일단은 type casting 만 하고 넘어간다.