모든 조건문을 지나서 예외처리도 아닌 return 0;처리를 해주는 이유를 모르겠습니다.
조회수 872회
'C로 쉽게 배우는 자료구조(천인국 저)'라는 책을 보고 있습니다.
트리 챕터에서 수식 트리 계산 프로그램이라는 예제가 나오는데요.
다음과 같습니다
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int data;
struct TreeNode *left, *right;
}TreeNode;
TreeNode n1 = { 1,NULL,NULL };
TreeNode n2 = { 4,NULL,NULL };
TreeNode n3 = { '*',&n1,&n2 };
TreeNode n4 = { 16,NULL,NULL };
TreeNode n5 = { 25,NULL,NULL };
TreeNode n6 = { '+',&n4,&n5 };
TreeNode n7 = { '+',&n3,&n6 };
TreeNode *exp = &n7;
// Expression Evaluation Function
int evaluate(TreeNode *root)
{
if (root == NULL)
return 0;
if (root->left == NULL && root->right == NULL)
return root->data;
else {
int op1 = evaluate(root->left);
int op2 = evaluate(root->right);
printf("calculate %d %c %d.\n", op1, root->data, op2);
switch (root->data) {
case '+' :
return op1 + op2;
case '-':
return op1 - op2;
case '*':
return op1 * op2;
case '/':
return op1 / op2;
}
}
return 0;
}
int main(void)
{
printf("Evaluation value is %d.\n", evaluate(exp));
return 0;
}
위에서 별표친 return 0;처리가 도무지 이해가 안 갑니다.
예외 발생을 위한 것이라면 아마도 예외처리블록을 따로 만들어주었을텐데 왜 굳이 return 0;을 마지막에 작성했을까... 의문이 드네요.
혹시 저자분께서 어떤 의도이셨을지 일말의 추측이 되시는 분 있으신가요?
의견 한 마디 부탁드립니다!
:)
1 답변
-
질문에 별표친 return 0이라고 되어 있는데, 질문에서 별표는 보이지가 않네요. evaluate 함수 마지막 줄의 return 0을 말씀하시는 것인가요?
evaluate 함수 마지막의 return 0은 그 위에 있는 모든 조건이 성립하지 않았을 때(즉, 잘못된 입력일 때) 0을 리턴하라는 뜻입니다.
예를 들어, root->data가 +-*/ 중 하나가 아닐 때라든지.
-
(•́ ✖ •̀)
알 수 없는 사용자
-
댓글 입력