<오답 풀이>
#include<stdio.h>
int main(void)
{
int A, B;
while (1)
{
scanf("%d %d", &A, &B);
printf("%d\n", A + B);
if (A + B == 0) break;
}
return 0;
}
0 0이 입력됨과 동시에 프로그램이 종료되어야 하지만, 0 + 0 을 출력 한뒤에 0 + 0이면(if) break가 적용이 되어 버려 오답이다.
<정답 풀이>
#include<stdio.h>
int main(void)
{
int A, B;
while (1)
{
scanf("%d %d", &A, &B);
if ((A==0)&&(B==0)) break;
printf("%d\n", A + B);
}
return 0;
}
if ((A==0)&&(B==0)) break; 의 문장을 통해 A B값 둘다 0 입력시 반복문이 종료가 되고, 프로그램이 종료되어 값이 출력된다.
-main함수의 return문-
main 함수의 마지막에서 0을 전달(반환) 하는 이유는 무엇일까? 이 값은 main함수를 호출한 영역으로 전달된다.
그런데 main함수는 프로그램이 시작이 되면 자동으로 호출되는 함수다.
그리고 호출의 주체는 window나 Linux와 같은 운영체제이다.
따라서 0은 운영 체제에게 전달된다. 그리고 그값은 프로그램의 종료 상태를 알리는 용도로 사용된다.
보통 0은 정상적인 종료의 상황에서 전달하는 값이다.
반면 비정상적인 상황으로 인해서 종료될때는 일반적으로 0이 아닌 값을 전달한다