Turbo-C
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
터보-C 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
Lua 게시판
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C/C++ Q/A
[1580] Re:[질문] 간단한 덧샘 프로그램(?)인데요...;
임양규 [] 1528 읽음    2002-11-19 09:19
안녕하세요??

저도 잘은 모르지만....아는대로 답변 하겠습니다.~~

현 요 님이 쓰신 글 :
: #include <stdio.h>
:
: int a,b,c;
:
: int sum(int x, int y);
:
: int sum(int x, int y)
: {
:     return (x+y);
: }
:
: main()
: {
:     scanf("%d", &a);
:
:     scanf("%d", &b);
:
:     c=sum(a,b);
:     printf("\n%d 더하기 %d = %d\n",a,b,c);
:
:     return 0;
: }
:
: 책에서 배운대로 대강대강 따라하면서 적었거든요
: 근데 아직 이해가안되는 부분이 있는데요;;
: return이요... 책을 아무리 열심히 읽어도 잘 이해가 안되네요 하하;
: return이 저기서 하는 역할이 궁금해요
: return (x+y); <- 여기서 사용된 return과
: return 0 <-여기서 사용된 return이 다른가요?


==> return (x+y)와 return 0에 사용된 return은 같은 용도입니다. 즉, 함수의 마지막을 알림과 동시에 호출한 함수(여기서는 메인)로 결과를 돌려주는 명령입니다. 즉, return (x+y)에서는 인수로 x값과 y값을 더해서 호출한 함수로 결과값을 전달해 줍니다.

그러면 return 0은 어디로 결과를 돌려주나? 궁금할 수도 있습니다. 이유는 main()에서 앞에 int 가 생략된 것입니다. 즉, main()도 하나의 함수입니다. 즉, C언어에서 main()을 호출하니까 호출결과를 돌려주기 위해서 return 0을 넣은 것이겠지요~~


: 그러니깐 사용된 결과라고 해야하나 목적이라고 해야하나;;;
: 전자의 경우는 대강어림짐작으로 찍어서 sum이란 함수를 정의해준다고 해야하나
: sum이란 함수가 어떻게 일해야하는지 알려준다고 해야하나
: 아무튼 그런것 같은데요.. 꼭 return밖에 못쓰는지 그것도 궁금하구요..
: 전자후자 둘다 궁금해요 *.*

==> int sum(int x, int y); 달랑 이렇게 쓰면 함수 선언입니다. 함수를 선언 한다고 합니다.  (세미콜론 ; 사용에 유의하세요~)

int sum(int x, int y)  ==> 이렇게 쓰면 위에 선언된 함수를 정의하는 것입니다. 즉, 함수의 내부 코드를 작성해 주는 곳이죠...(여기는 세미콜론이 없습니다.)
{
    return (x+y);


함수의 선언은 형태는 다음과 같습니다.

리턴형 함수이름(인수, 인수....);
int sum(int x,int y);

여기서는 이렇게 적용이 되겠죠...

sum이라는 함수는 integer 값 x와 y를 받아들여 내부에서 계산을 한 후에 그 결과값(int)을 리턴해 준다.

함수의 형에 따라서 return 이 없을 수도 있습니다. 설명드리기 좀 애매한데, 일단, void 형 함수는 리턴값이 없습니다. 물론 return 값이 있을 수도 있습니다. 그러나, 일반적인 함수는 리턴값이 있어야 제대로 실행되며, 컴파일시 warning도 없습니다.



:
: 그리고,
: (\n%d 더하기 %d = %d\n",a,b,c)
: 이부분요.. 이부분이 책에는 설명이 안되어 있네요
: 저 정말 이제막 시작한 왕초보거든요 근데
: 처음에 할때는 \n%d, 이런것들 빼고 적어봤는데
: 에러는 나지 않지만 제가 원하는 결과가 나오지 않더라구요..
: 그래서 결국은 책에 나온데로 적었거든요;
: 그러니깐 되더라구요 -0-;
: 그리고 뒤에 a,b,c도 첨엔 안적었었는데 역시나 안적으니 이상하게 되고..;
: 저부분이 결과가 출력되는 부분인데... 저걸 어떻게 해석해야 하나 하고
: 한참 고민하다고 결국은 글 올립니다.
: 무지한 저를 일깨워주세요 -ㅁ-;
:
:

==> ("\n%d 더하기 %d = %d \n",a,b,c) 이 부분의 결과 값은 화면에 프린트 하는 부분인데 결과는 이런식이겠죠...
한줄을 넘긴 후에 그 다음줄에

3 더하기 5 = 8

그리고 또 한줄 넘기고...

" " 안에 사용된 \n은 특수문자입니다. 미리 정의되어있는 값입니다. \n은 한줄을 넘기는 것이고, \t는 탭을 \\는 \프린트 등입니다.

컴파일러의 도움말에서 printf의 함수 원형을 찾아보시면....

이렇게 되어있을 것입니다.  int printf(const char *format[, argument, ...]);

즉, format은 " " 에 해당되고, argument는 a,b,c 등입니다. 결과값은 int 이겠죠....
성공했을 경우에는 화면에 출력된 바이트 수를 리턴하고, 에러일 경우에는 EOF를 리턴합니다.

그런데 " " 안에 사용된 %d의 갯수와 argument 수가 동일해야 에러가 안나고 실행이 됩니다.

즉, %d %d %d %d    a,b,c    이렇게 되면 %d에 해당하는 인수 1개가 모자르므로 에러...

지금 보고계시는 책에 찾아보시면 %d %f %x 등이 있을 것입니다.

%d는 정수 값을 프린트하기 위한 것이고, %f는 float 값, %x는 16진수....%c는 char 등입니다.

지금 프로그래밍하는 컴파일러의 도움말에서 함수를 찾아보시고...함께있는 예제도 실행시켜 보세요....그러면 감이 올것입니다.~~

그럼....으 장문이 됐네요^^

+ -

관련 글 리스트
1579 [질문] 간단한 덧샘 프로그램(?)인데요...; 현 요 1433 2002/11/19
1594     그렇다면 저도... ^^; (STL 사용) 김백일 1324 2002/11/20
1591     더 간단한 덧셈~ ㅡ ㅡ;; 만시즈 1382 2002/11/20
1580     Re:[질문] 간단한 덧샘 프로그램(?)인데요...; 임양규 1528 2002/11/19
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.