본문 바로가기
카테고리 없음

logical shift loop bug(?)

by Leo 리오 2012. 6. 5.
반응형

버그는 아니겠지만, 


>> logical shift 를 32이상 하게되면 0을 기대했으나,


다시 돌아오는 버그(?)가 있다.


(uint로 했는데 그냥 int로 해도 결과는 똑같다.)


main()

{

        unsigned int a = 12345;

        int i;

 

        for(i=0; i< 50; i++)

        {

               printf("%2d %u\n", i, a<<i);

        }

}


 




a << shift;

shift>=sizeof(a)*8 ? 0 : a << shift;
이렇게 쓰면 되겠다.







반응형

댓글