2013-07-05 113 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. 我认为这样的问题只能通过一个行代码完成。