我不熟悉这种类型的printf()语句。为什么我的输出看起来像这样?感谢

时间:2017-08-15 06:39:55

标签: c

#include <stdio.h>       
     int main()
     {
          int i=43;
          printf("%d",printf("%d",printf("%d",printf("%d",i))));
          return 0;            
     }    

嵌套printf()的用途是什么?我使用了值43,但其他值如何  在输出中显示?

输出:

  

43211

4 个答案:

答案 0 :(得分:3)

将此视为代码的简单版本:

43

很明显为什么要打印printf。至于其他数字,它们是43211的返回值:

  

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

所以,你应该得到的(考虑到这是你的确切代码)是:'4'

  • 43是第一次印刷
  • 2是之前打印的位数('3' + '2'
  • 1是之前打印的位数('1'
  • 1是之前打印的位数({{1}})

答案 1 :(得分:3)

printf的返回值是打印字符数。

让我们分析一下发生了什么。

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

最里面printf("%d",i)打印明显43i为43。

下一个外printf("%d",printf("%d",i))打印2,因为前一个printf的输出长度为2(长度为&#34; 43&#34;)。

到目前为止,输出是:

  

432

下一个外部printf将打印1,因为前一个printf的输出长度是"1"的长度,即1。

到目前为止,输出是:

  

4321

外部printf将再次打印1,因为前一个printf的输出长度为"1"的长度为1。

所以最终输出是:

  

43211

答案 2 :(得分:0)

您正在打印printf()的返回值,因为第一次正确打印43

printf()不会返回&#34;项目的数量&#34;类似于scanf()函数族的输出用于输入。它返回实际的字符数。

答案 3 :(得分:0)

printf返回一个int值,所以如果你连接printf命令,第一个值是你要打印的数字,其他是printf指令的结果,如果成功则返回打印字符的数量(即使它们是回车或新线也不可见)。

  • 在你的情况下:
  • 43第一个号码
  • 3 printf int result
  • 等......