2013-07-05 40 views
0
int main() 
{ 
     int x = 10, y; 
     y = printf("x = %d\n", x); 
     printf("y = %d\n", y); 
     return 0; 
} 

output: 
x = 10 
y = 7 

我知道printf返回打印字符串時的字符數。但是爲什麼在打印時返回7?10.打印int時,printf的返回值是多少?printf在c中的返回值?

可能重複: Return value of printf() function in C

+3

因爲字符串「x = 10 \ n」包含7個字符! –

+0

它是如何7?它是3的權利。 – user1762571

+1

它是如何3? 「x =」有3個字符。 「x =」有4,「x = 1」有5,... –

回答

3

閱讀:int printf (const char * format, ...);

如果成功,則返回寫入的字符總數。

代碼中的第一個printf x = 10

printf("x = %d\n", x); 

打印7個字符x = 10\n,並返回在y收到7:

x = 10\n 
    1234567 
    ^^ ^- new line char \n 
    | |--spaces 

記得\n(新線)單字符,而空格是單個字符。

+0

*打印在'y'中收到的7個字符* - 我認爲你應該寫*返回7(即字符數),它是在'y' *中接收的。 – 0decimal0

+0

@PHI創始人更正,現在檢查 –

+0

是啊!現在投票:) – 0decimal0

5

像你說的,「printf的返回字符的數量,當我們打印字符串」。

x = 10\n」有7個字符。 (即,這些:'x',' ','=',' ','1','0','\n')。

因此,y被設置爲7。

1

字符串的長度:

"x = 10\n" 

(不包括雙引號)爲7個字符。這就是存儲在中的內容。白色空格和'\ n'也都是1個字符。

0

「x =%d \ n」當然有7個字符。 注意有2個「空格」,1「%」和1「d」,請記住「\ n」是一個整體。 您可以嘗試其他句子。如z = printf("x = %d,asd\n",x);或某物。像那樣。 答案是11. 我認爲這樣的問題只能通過一個行代碼完成。