C언어 오버플로우와 형 변환 질문입니다.
글쓴이: bureokjam / 작성시간: 월, 2017/07/03 - 9:48오전
예전에 질문 올리긴 했으나 해결이 잘 안되어서 다시 한 번 올려보아요.
연산 결과값이 30억이고 피연산자의 자료형이 int형이라면, 이는 오버플로우 이고 undefined behavior입니다. 반면 30억이라는 값이 int형으로 변환될 때에는(가령 int형 변수 a에 30억 이라는 값이 대입될 때에는) implemention defined입니다. 즉 연산 결과값이 피연산자의 자료형인 int형으로 표현되어야 하는것과,
30억이라는 값이 변환에 의해서 int형으로 표현되어야 하는 것은 둘 다 같은 것 같은데, 왜 전자는 undefined behavior이고 후자는 implemention defined 인가요?
Forums:
검색을 해보니 아래의 내용이 충분한 답이 되는 것
검색을 해보니 아래의 내용이 충분한 답이 되는 것 같습니다
https://kldp.org/node/39932
쉽게 생각해봐도 연산 중에 오버플로우가 나면 프로세서 입장에서는 이게 30억인지 4억인지 -1인지 뭔지 모를 것 같습니다
댓글 달기