float형의 오버플로우를 알고 싶습니다.
글쓴이: yamong / 작성시간: 금, 2003/04/18 - 2:08오전
너무 많이 물어봐서 혼자서 해결하려고 했는데....ㅡㅡㅋ
int형은 일정한 숫자 이상이면 overflow를 알 수 있는데, float형은 오버플로우를 어떻게 알 수 있나요?
제가 만들고 있는 프로그램에서 int형과 float형의 변수에 오버플로우가 나면 실행을 중지 시키게끔 하고 싶습니다. 어떻게 그것을 찾아 낼 수 있는지요?
이킁. 한가지 더요.
int i;
scanf("%d", &i);
이런 식으로 int형을 입력 받을 때, 문자를 입력받으면 에러를 출력 하려고 합니다. 이때는 어떻게 알 수 있나요?
Forums:
32bit 중에서 31......0 라고 생각하시고..in
32bit 중에서
31......0 라고 생각하시고..
int를 예를 들겠습니다.
31번은 부호를 나타내는 bit입니다.
30번째는 부호를 제외하고 값을 나타내는 최상위 비트입니다.
30번째 bit에서 31번째 bit로 값이 올라갈때 overflow가 일어나게 됩니다.
간단하게 표현하면
V = I:31 XOR I:30을 하게 되면
31번재와 30번재의 부호가 서로 반대일 경우 V의 값이 1이 되면서 overflow를 알아낼수 있습니다.
이를 이용하시면 가능할것이라 생각합니다.
대충 코드로 해보면
평온하다~
아 그리고 2번재 질문은..문자를 받더라도 i 에는 숫자 즉 as
아 그리고 2번재 질문은..
문자를 받더라도 i 에는 숫자 즉 ascii 값이 들어갑니다.
man ascii에서 문자의 범위를 보시고 i의 값이 문자 범위라면 에러를 내면 되겠네요..
평온하다~
[quote="wooix"]아 그리고 2번재 질문은..문자를 받더
잘못된 정보입니다. :(
scanf가 돌려주는 값을 확인하면 됩니다. scanf는 정상적으로 처리된 변수 갯수를 돌려줍니다. 더 자세한 내용은 RTFM. :)
int인데 char일때로 설명을 해놨네요.. 용도가 잘못되었습니다. ^^
int인데 char일때로 설명을 해놨네요.. 용도가 잘못되었습니다. ^^
지적 감사합니다.
평온하다~
댓글 달기