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

    最近偶然间见了这样一道题: 
    1 #include<stdio.h>
    2 int main() 
    3 {   
    4    int i=43;     
    5    printf("%d
    ",printf("%d",printf("%d",i)));  
    6    return 0;
    7 } 

    这个题感觉蛮怪的,不太常见!大家看看吧!

    当然你在vc++6.0上一运行,你就能知道这个输出结果,但是你知道为什么吗?

    请看:

    以上程序输出结果为: 

     
     
    那么为什么是这个结果呢?大家请看下面解释: 
     *****************************************************************************************************
    一、printf("%d ",printf("%d",printf("%d",i)    )   ); 
    /*大家先看画线的这一部分,这一部分打印出来是:
     
     
     
    这一步比较简单,没啥可说的,就是打印出来i的值43 
    **************************************************************************************************
     二、printf("%d ", printf("%d",printf("%d",i )  )   ); 
    //这次画线部分打印出来是 
     
     
     
    这是因为 
     函数名   :printf 
    函数原型:int printf (char * format,args,···); 
    功能:按format指向的格式字符串所规定的格式,将输出表列args的值输出到标准输出设备。 
    返回值:输出字符的个数,若出错,则返回负数。 
    说明:format可以是一个字符串,或字符数组的起始地址。

     理解:

                     其实主要printf返回值是字符串个数,就行了。 

                     第一部分画线的是i=43,是两个字符,
                     所以第二个画线的输出就是2(代表43是两个字符)。
    所以输出来就是432
    **********************************************************************************************
    三、printf("%d ",printf("%d",printf("%d",i))); 
    这一部分打印出来是 
     
     
                      分析:第三部分画线的1(代表第二部分中的2是一个字符。) 
     
    *************************************************************************************************
    现在再举几个例子,加强理解: 
    例题1:
    输入i=987; 
    输出最终结果是98731 
    分析:
               因为987是三个字符,3又是1个字符; 
    -------------------------------------------------------------------
    例题2:
    输入i=56479854987; 
    输出最终结果就是56479854987112; 
    因为56479854987是11个字符,11是两个字符;
     
    ********************************************************************************************
          好了,讲到这里相信大家都明白了吧!
                       这道题其实主要考察printf函数返回值,题目不难,但是我们很少注意。
            欢迎各位交流分享,讲解有不对之处,还望各位前辈指出。先在此谢谢啦!
     
  • 相关阅读:
    Queueing at Bank【PAT 1017题】
    table标签的布局
    股票投资的24堂必修课1
    股票投资的24堂必修课2基本面分析
    Eclipse最全快捷键 分享便捷与快乐
    浅析将matlab函数编译成dll供Cpp调用的方法
    Python编程语言中调用Matlab绘制保存数据的方案
    Eclipse中10个最有用的快捷键组合
    WPF 4 DataGrid 控件(进阶篇二)
    VBS 操作 IIS
  • 原文地址:https://www.cnblogs.com/xingyunblog/p/3657580.html
Copyright © 2011-2022 走看看