在c中返回printf的值?

时间:2013-07-05 14:12:44

标签: c printf

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.什么是printf打印int时的返回值?

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

4 个答案:

答案 0 :(得分:5)

就像你说的那样,“printf返回打印字符串时的字符数。”

x = 10\n”有7个字符。 (即,这些:'x',' ','=',' ','1','0','\n')。

因此,y设置为7.

答案 1 :(得分:3)

阅读:int printf ( const char * format, ... );

  

成功时,将返回写入的字符总数。

代码中的x = 10首先是printf:

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

打印七个字符x = 10\n,并返回y中收到的7:

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

记住\n(新行)是单个字符,空格是单个字符。

答案 2 :(得分:1)

字符串的长度:

"x = 10\n"

(不包括双引号)是7个字符。这就是存储在 y 中的内容。白色空格和'\ n'也只是1个字符。

答案 3 :(得分:0)

“x =%d \ n”当然有7个字符。 注意有2个“空格”,1个“%”和1个“d”,记住“\ n”是一个整体。 你可以尝试其他句子。例如z = printf("x = %d,asd\n",x);或者......像那样。 答案是11。 我认为这些问题可以通过再增加一行代码来完成。