This question already has answers here:
Closed 2 years ago.
What does printf return?
(4个答案)
我不明白下面的代码是如何给出不同的输出的
#include <stdio.h>
int main()
{
        int i=43;
        printf("%d\n",printf("%d",printf("%d",i)));
        return 0;
}

输出:4321
printf("%d\n",printf("%d",printf("%d ",i)));

输出:43 31
printf("%d\n",printf("%d ",printf("%d ",i)));

输出:43 3 2
printf("%d\n",printf("%d ",printf(" %d ",i)));

输出43 4 2
printf("%d\n",printf(" %d ",printf(" %d ",i)));

输出:43 4 3
其他的变化也会产生其他的结果。
一个空格怎么能改变一个数字。
提前谢谢。

最佳答案

printf返回打印的字符数
在您的情况下,该语句可以像这样断开-预期输出为:

    printf("%d\n", // 1
           printf("%d", // 2
                  printf("%d",i)    // 43
                 )
          );  // 4321

有关更多信息,请参阅标准fprintfprintffprintf的特例,流为stdout
7.21.6.1 fprintf功能
 #include <stdio.h>
       int fprintf(FILE * restrict stream,
           const char * restrict format, ...);

fprintf函数返回传输的字符数,如果发生输出或编码错误,则返回负值。

关于c - 嵌套的printf语句有效,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40970959/

10-13 23:38