bitshift를 이용해서 큰 값을 표현할때의 주의점. 1<<62

boj 11652번 문제의 정답 코드에서

long long mxval=-(1ll<<62)-1;//1을 long long으로 형변환하지 않고 1<<62로 작성시 int overflow 발생

이라는 말이 있어서 한번 1ll이 아니라 1로 작성해서 제출해보았다. 

일단 내 맥에서 코드실행 할때도 문제없이 구동되어서 제출을 한번 해보았는데, 

제출도 잘 되고 맞았습니다도 받을수 있었다.

한번 제출한 코드를 확인해보니

맨 아래 볼 수 있는것처럼 

left shitf count >= width of type [-Wshift-count-overflow] 라는 내용을 볼 수 있었다. 

이렇게 메세지가 뜨지만 알아서 변환을 해주는건지 정상적으로 맞았습니다를 받았다. 

하지만 다음에는 이렇게 작성해서 제출하지 말고 (1ll<<62)형태로 작성해서 타입을 명확하게 long long으로 바꾸어서 코드를 작성한뒤에 제출하도록 하자. 

확실하게 정답을 받도록 하자. 

  Comments,     Trackbacks