파라미터 타입을 안 정하고 int foo(someVar){} 같이 써도 되는 건가요?

조회수 1468회

소스코드

int foo(someVar){
    return someVar;
}

int main(int argc, const char * argv[]) {
    printf("%d\n", foo(3));
}

foo()의 인자 someVar는 타입이 없는데 컴파일 에러도 없고 프로그램도 잘 실행됩니다.

이게 왜 가능한 건가요?

1 답변

  • 좋아요

    0

    싫어요
    채택 취소하기

    저렇게 쓰는 건 old-style 함수 정의라고 합니다. 이때 형을 정하지 않은 파라미터는 자동으로 int형으로 선언되기 때문에 int foo(someVar)int foo(int someVar)와 같습니다.

    따라서 foo()는 int 타입을 return해야 하는데 return someVarsomeVar는 int형이기 때문에 에러가 뜨지 않고, main함수에서 "%d"로 출력해도 아무런 문제가 없습니다.

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

Hashcode는 개발자들을 위한 무료 QnA 사이트입니다. 계정을 생성하셔야만 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 계정을 생성하셔야만 글을 작성하실 수 있습니다.