모든 조건문을 지나서 예외처리도 아닌 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 답변

  • 좋아요

    1

    싫어요
    채택 취소하기

    질문에 별표친 return 0이라고 되어 있는데, 질문에서 별표는 보이지가 않네요. evaluate 함수 마지막 줄의 return 0을 말씀하시는 것인가요?

    evaluate 함수 마지막의 return 0은 그 위에 있는 모든 조건이 성립하지 않았을 때(즉, 잘못된 입력일 때) 0을 리턴하라는 뜻입니다.

    예를 들어, root->data가 +-*/ 중 하나가 아닐 때라든지.

    • (•́ ✖ •̀)
      알 수 없는 사용자
    • 아이고..*을 친 부분을 글 수정하면서 빠뜨렸나보네요.... 잘못된 입력처리를 위한 것이였군요! 항상 친절한 답변 감사드립니다 :) 임지훈 2021.5.20 18:28

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)