现在的位置: 首页 > 算法 > 正文

printf函数的返回值

2020年01月13日 算法 ⁄ 共 721字 ⁄ 字号 评论关闭

  先看下面一段程序:

  #include

  int main()

  {

  int i = 123;

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

  return 0;

  }

  printf函数里面又嵌入了printf函数,你认为此段程序会打印出什么?

  本程序在VC 6.0上编译,程序的实际运行结果是:12331

  对于这个运行结果,你怎么看?

  我们来一步步分解printf函数,看看为啥会输出这个结果。

  程序中的print函数是这样写的:printf("%d\n",printf("%d",printf("%d",i)));

  一共有三个printf函数,我们可以使用一些代号来简化这个printf函数,如下:

  代号A: printf("%d",printf("%d",i));

  代号B: printf("%d",i)

  则程序代码可以简化为:printf("%d\n",A); 那么我们就先来求A。

  而A,又可以简化为:printf("%d",B);那么我们就先来求B。

  B是 printf("%d",i),打印出“123”,即在运行结果中,你最先看到的是123。printf函数的返回值是printf实际控制输出的字符数,那么打印的123 就是3个字符,因此printf("%d",i)返回的就是3,也就是B是3,那么,A就可以写为printf("%d",printf("%d",3));打印出3,即在运行结果中,你紧接着会看到3。而打印出的3是1个字符,因此A就是1,那么printf("%d\n",A); 实际上就是printf("%d\n",1); 打印出1,即在运行结果中,你最后看到的就是1.

抱歉!评论已关闭.