2014-11-26 2 views
-1

스 니펫에 대해 생각했지만 이유를 찾을 수 없습니다. 조금 까다로운 프로그램 출력

printf("%d",printf("tim")); 

왜 이것이 output.the 출력과 3 인쇄된다 tim3이다. 왜?? http://linux.die.net/man/3/printf

"tim" 3 자 :

+0

출력이 까다 롭지 않습니다. 처음에는 내부 printf가 문자열을 출력 한 다음 그 출력 3을 외부 printf로 반환하므로 3은 인쇄 된 문자열 (여기서는 "tim")을 따릅니다. – JasonStack

+0

아주 놀랍습니다 ............. – Khan

+0

왜 downvotes가 있습니까? – Khan

답변

2

printf() 문자의 수를 성공적으로 그것이 3

그 사람을 확인이 경우에 printed.So 반환합니다.

내부 printf()이 값을 이용하여 두 printf() S가있다 3.

+0

3자는 어떻게됩니까? – Khan

+0

전체적으로 하나의 문자가 printf입니다 ... – Khan

+0

@ 칸 * "전체적으로 하나의 문자가 printf"* 허? –

1

을 인쇄한다) (tim 외측의 printf 인쇄 후 3 리턴.

  1. 내측 printf() [printf("tim") 우선 실행하고, 인쇄물 "팀"을 성공적으로 인쇄 된 문자 [tim위한 3]의 number을 retuns.

  2. printf()의 리턴은 효과적으로 printf("%d", 3); 만드는 제 printf() [printf("%d",printf("tim"));]에 입력된다. 그래서, 그것의 3

인쇄 난 당신이 man page에서 printf()의 retrun 값을 확인하는 것이 좋습니다. 성공할 돌아와서

을 미국, 이러한 함수 ( 문자열 출력을 종료하는 데 사용 널 바이트 제외) 인쇄 문자의 수를 반환한다.