2014-12-25 2 views
-3
#include<stdio.h> 
int func(int x){ 
    printf("Print\n"); 
    return x; 
} 
void main(){ 
    printf("The value of x is %d",func(50)); /* Print is printed first then the value of x */ 
    return 0; 
} 

출력은 다음과 같습니다가 The value of x is 50를 인쇄하고 그 후 기능이 Print 인쇄 왜 문을 인쇄하기 전에 함수가 호출되는 이유는 무엇입니까? 이 프로그램에 대한

Print 
The value of x is 50 

그래서 내 질문입니다. 명령문 다음에 함수가 호출 된 이후에 The value of x is이 인쇄되지 않는 이유는 무엇입니까?

+0

'printf()'가 호출되어 그 값이 반환되기 전에 – Rizier123

+0

메인의'printf'에서 사용할 수있는 값을 반환합니다. 또한'void main()'대신'int main (void)'를 사용하십시오. –

답변

4

프로그램의 흐름을 분석해 보겠습니다.

  1. main()이 호출되고 있습니다.

  2. printf()이 호출되고 있습니다. printf()의 인자를 평가하는 동안

    2.1의 func(50) 함수 호출 발생

    2.2 func(50) 함수는 실행하기 시작한다. 이는 인쇄, printf("The value of x is %d",50);

  3. 초 인쇄 발생 [50 func(50) 함수 호출의 리턴 값이다]처럼 main()에서 printf() 보이는, Print를 출력 x [50]

    마지막
  4. 반환 The value of x is 50

출력 화면은 다음과 같습니다.

Print 
The value of x is 50 

참고 : 이미 의견에서 언급했듯이 void main() 대신 int main()을 사용하십시오. 그렇지 않으면 return 0은 의미가 없습니다.

1
func(50) 

정도로 파라미터 printf()의 제 있었던 파라미터에 제 %d 실행지고 printf() 함수에 파라미터 출력해야하는 기대 값은 그 제 agrument에 의해 제공된다. 따라서 함수 호출 func(50)이 먼저 func()에서 Print을 인쇄하고 나중에 main()printf이 실행됩니다. 결국

을 인쇄

printf("The value of x is %d",50); 

: -

printf("The value of x is %d",func(50)); 

FUNC (50)>는 Print을 인쇄 및 모양을) (주에서) (그래서 지금의 printf 50

을 반환

Print 
The value of x is 50 
관련 문제