게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
c++ cout함수에 대해 질문 있습니다.
게시물ID : programmer_20754짧은주소 복사하기
작성자 : ㅜ_ㅠ
추천 : 0
조회수 : 647회
댓글수 : 6개
등록시간 : 2017/06/04 10:44:12
아래 코드는 열혈강의 c++교재의 소스인데요
그런데
만일 245(혹은 아무숫자)와 0을 입력한다면 F10키를 눌러가며 디버깅을 하면
cout<<"결과는"<<divide(a,b)<<"입니다"<<endl;
에서 divide(a,b)함수를 호출해서 throw구문에서 catch구문이 나올때까지 호출한 함수에서 찾다가 없으면 함수를 종료하고 그래서 main함수에 있는 catch까지 도달한다고 써 있는데요.
근데 제가 알기 로는 cout함수는 왼쪽부터 실행되고 프로그램이란건 순차적으로 진행되어야 하기때문에
그렇다면 화면에 최소한 "결과는" 이 화면에 출력되야 하니까

"결과는0으로 나누었습니다"
"프로그램이 끝났습니다."

이런식으로 나와야 정상 아닌가요?

그런데 실제 실행하면

"0으로 나누었습니다"
"프로그램이 끝났습니다."

라고 나오면서 "결과는"의 출력이 무시되더군요.
분명히 cout함수로 시작되는 구문인데 divide(int a,int b)함수가 호출해서 try throw함수의 예외처리가 구문이 실행되면 어째서 cout의 출력이 완전히 무시되는지 그 이유를 꼭 알고 싶네요.

#include <iostream>
using namespace std;

int divide(int a,int b)
{
if(b==0)
throw(b);
return a/b;
}
int main()
{
int a,b;
cout<<"두개의 숫자 입력";
cin>>a>>b;
try{
cout<<"결과는"<<divide(a,b)<<"입니다"<<endl;
}
catch(int b)
{
cout<<"0으로 나누었습니다."<<endl;
}
cout<<"프로그램이 끝났습니다."<<endl;
return 0;
}
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호