• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

1.8 C언어와 함수 강의의 14:15 16:50 부분 질문있습니다.

21.10.06 17:56 작성 조회수 141

1

안녕하세요. 강의 유익하게 잘 보고있습니다.

14:15, 16:50 부분 관련 질문있습니다.

 

 

14:15의 설명에서 return 뒤에 쓰이는 숫자가 exited with code 뒤에 출력으로 오는 것을 알 수 있고

16:50의 설명에서 int 와 7이 관련이 있다 하셔서 개인적으로 실험을 하나 해봤습니다.

강의의 코드를

float main()

{

return 7.7777;

}

로 바꾸어서 실행하면 7.7777이 나올 것으로 생각했는데

실제 출력되는 숫자는 다른 숫자가 나옵니다.

혹시 return 함수가 실수형은 받지 않아서 이런 현상이 나타나는 건가요?

 

 

 

 

답변 1

답변을 작성해보세요.

2

안소님의 프로필

안소

2021.10.07

안녕하세요!

In C and C++ standard the entry point must be one of the following forms:

  1. int main(void);
  2. int main();
  3. int main(int argc, char **argv);
  4. int main(int argc, char *argv[]);

Some variations are allowed but in C++ the return type must always be int. In C sometimes void return type is also accepted by the compiler. However you can't return other types because the return value will be used by the OS and other programs to determine exit code which is always an integer.

main 함수는 int 정수 반환형밖에 없습니다. 

 main 함수의 리턴값이 하는 역할은 운영체제에게 이 프로그램이 어떻게 끝이 났는지 알려주는 역할입니다. 운영체제는 이에 대한 정보를 정수 코드로 알아듣기에 반환형이 정수여야하는거구요!

따라서 return 456; 이렇게 직접 리턴 값을 지정해주는게 아니라면 기본적으로 main 함수는 0 을 리턴하고, 이렇게 0 을 리턴한 것을 보고 운영체제는 프로그램이 정상적으로 실행되었고 문제없이 잘 종료 되었구나라고 인식하게 됩니다. 

main 함수는 int 여야 합니다. 질문자님께선 리턴형이 float 인 main 함수로 만드셨기 때문에 warning 살펴보시면 아마 main 리턴은 int 여야한다고 경고 뜨실거에요. 이렇게 main 함수 형태가 정상적이지 않은 문제 때문에 다른 값을 리턴하게 되었을거에요. 다시 말씀드리지만 return 1 이런식으로 main 함수가 리턴할 정수를 직접 지정해준게 아니라면, main 함수는 자동으로 프로그램 성공시 0, 뭔가 문제가 있을시 그 외의 숫자를 리턴한다고 보시면 됩니다. 

7.77이 아닌 다른 숫자를 리턴한 결과는 main 함수가 float 인 것 때문에 뭔가 프로그램이 정상적이지 않아 0 을 리턴하지 않았다고 해석할 수 있을 것 같습니다.

(그리고 여담으로 7.77 은 float 이 아닌 double입니다. float이라면 7.77f 이 맞는 표현입니다.)  

 

wlqjawlan님의 프로필

wlqjawlan

질문자

2021.10.07

친절하고 자세한 설명 정말 감사합니다!

많은 도움이 되었습니다!!