1339번 - 단어 수학
(int)vector.size()로 하면 정답처리가 되고 vector.size()로 하면 런타임 에러가 발생합니다. 이 둘의 차이가 있는건가요?
10 - v.size()가 음수가 될 가능성이 있는지를 봐 주세요.
10 - v.size()는 unsigned int로, 음수가 되는 대신 양의 MAX값에 가깝게 됩니다.
음... 지금 보니까 음수가 될 수 있네요..
근데 10-(int)v.size() 역시 음수가 될 수 있는거 아닌가요??..
음수가 되면 정상 작동합니다. 하지만, 10 - v.size()는 10쪽이 오히려 unsigned int로 변환되어 unsigned int끼리의 뺄셈이 수행되기 때문에 음수가 되지 못하고 오버플로로 매우 큰 양수가 됩니다.
아아! 감사합니다..
댓글을 작성하려면 로그인해야 합니다.
disdong123 3년 전
(int)vector.size()로 하면 정답처리가 되고 vector.size()로 하면 런타임 에러가 발생합니다. 이 둘의 차이가 있는건가요?