zoukankan      html  css  js  c++  java
  • printf函数的返回值

    先看下面一段程序:

    文末会给大家推荐几本好书,希望能够需要的朋友一点帮助!


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

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

    程序的实际运行结果是:


    对于这个运行结果,你怎么看?
    我们来一步步分解printf函数,看看为啥会输出这个结果。 

    程序中的print函数是这样写的:
    printf("%d ",printf("%d",printf("%d",i))); 
    一共有三个printf函数,我们可以使用一些代号来简化这个printf函数,如下:
    代号A: 
    printf("%d",printf("%d",i));
    代号B: 
    printf("%d",i)

    则程序代码可以简化为:
    printf("%d ",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 ",A); 实际上就是printf("%d ",1); 打印出1,即在运行结果中,你最后看到的就是1.



  • 相关阅读:
    iOS sandbox
    属性和成员变量
    SDWebImage
    MRC和ARC混编
    MRC转ARC(2)
    MRC转ARC
    CentOS7.x关闭防火墙
    Linux下Tomcat带日志启动命令
    SpringBoot-属性文件properties形式
    SpringBoot-配置Java方式
  • 原文地址:https://www.cnblogs.com/itblog/p/7236568.html
Copyright © 2011-2022 走看看