2015-02-05 3 views
-1

나는 int division을하고 나머지를 보여주는 간단한 프로그램을 작성 중이다. 사용자가 0을 입력 할 때까지 프로그램을 계속 실행하려고합니다. 사용자가 0을 넣은 후에 프로그램이 중지되지만 매번 "부동 소수점 예외"가 표시되기 전에 중지되지 않습니다. 이것은 코드입니다 :C++에서의 부동 소수점 예외?

#include <stdio.h> 

int main(){ 

    int x; 
    int y; 

    while (1){ 
    if (x && y == 0) 
     break; 
    else  
    scanf ("%i %i", &x , &y); 
    printf("%i %i/%i\n" , x/y , x % y, y); 
    } 


return 0; 

} 
+0

가 해결. 도와 주셔서 감사합니다 ... – BRK

답변

0

당신은 작업을 시도하기 전에 0을 확인해야합니다

#include <stdio.h> 

int main(){ 

    int x; 
    int y; 

    while (1){ 
    scanf ("%i %i", &x , &y); 

    if (x == 0 && y == 0) 
     break; 

    printf("%i %i/%i\n" , x/y , x % y, y); 
    } 

return 0; 

} 
+0

그래, 방금 편집했습니다. 명백한 (저에게) 첫번째 오류를보고 나서 전체 코드를 읽지 않았습니다. –

+0

당신은 - (1) x와 y를 어떤 값으로 초기화해야합니다 (아마도 0일까요?). (2)'scanf'의 반환 값을 검사하여 입력이 성공적이었고 두 변수가 모두 초기화되었는지 확인하십시오. –

+0

@HappyGreenKidNaps : vars를 원래 코드에서 0으로 초기화하면 결코 scanf에 도달하지 않습니다. 공평하게 말하면, 부동 소수점 예외를 처리했을 것이다. –

0

if (x && y == 0) 당신이 생각하는대로하지 않습니다. 아마도 if (x == 0 && y == 0)을 의미했을 것입니다.

또한 초기화되지 않은 값에 대해서는 작동하지 않아야합니다. 표현식에서 이러한 변수를 사용하기 전에 적절한 값을 주거나 적어도 이들이 적용되기 전에 사용자 입력이 이루어 졌는지 확인하십시오.

1

주문이 잘못되었습니다. 이 순서를하고있다 :

가 (당신이 x == 0 && y == 0을 필요로하는, 잘못) 우리가 수행하는 경우
  1. 확인
  2. 읽기 사용자 입력
  3. 쓰기 계산 된 출력

당신은 있는지 확인하지 않습니다 출력을 계산하기 전에 완료되었으므로 계산이 먼저 실패합니다.