이것 역시 제 블로그에 저를 위해 기록해 두는 것이 좋을 것이라 생각됩니다.
Shift Issue
핵심은 다음의 결과가 "0 0" 일까요? "1 0"일까요? 하는 문제입니다.
int _tmain(int argc, _TCHAR* argv[])
{
int a = 1;
printf("%d %d\n", a << 32, 1<<32);
return 0;
}
이전에 정성태님 홈피에서 가져온 volatile 관련 글에서 느꼇던 것처럼 컴파일러 최적화가 때론 개발자 잡는 경우가 생기는 것 같습니다.
이번 문제는 컴파일러 최적화는 옳바르고 Intel 칩셋의 Shift 연산 관련 규칙이 오해를 불러 잃으켰지만 ...
여튼 재미있는 글입니다.






