最近偶然间见了这样一道题: 
 #include<stdio.h>
int main()
{
int i=;
printf("%d\n",printf("%d",printf("%d",i)));
return ;
}

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

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

请看:

以上程序输出结果为:

 
 
那么为什么是这个结果呢?大家请看下面解释: 
 *****************************************************************************************************
一、printf("%d\n",printf("%d",printf("%d",i)    )   ); 
/*大家先看画线的这一部分,这一部分打印出来是:
 
 
 
这一步比较简单,没啥可说的,就是打印出来i的值43 
**************************************************************************************************
 二、printf("%d\n", printf("%d",printf("%d",i )  )   ); 
//这次画线部分打印出来是 
 
 
 
这是因为 
 函数名   :printf

函数原型:int printf (char * format,args,···); 
功能:按format指向的格式字符串所规定的格式,将输出表列args的值输出到标准输出设备。 
返回值:输出字符的个数,若出错,则返回负数。 

说明:format可以是一个字符串,或字符数组的起始地址。

理解:

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

                 第一部分画线的是i=43,是两个字符,
                 所以第二个画线的输出就是2(代表43是两个字符)。
所以输出来就是432
**********************************************************************************************
三、printf("%d\n",printf("%d",printf("%d",i))); 
这一部分打印出来是 
 
 
                  分析:第三部分画线的1(代表第二部分中的2是一个字符。) 
 
*************************************************************************************************
现在再举几个例子,加强理解: 
例题1:
输入i=987; 
输出最终结果是98731 
分析:
           因为987是三个字符,3又是1个字符; 
-------------------------------------------------------------------
例题2:
输入i=56479854987; 
输出最终结果就是56479854987112; 
因为56479854987是11个字符,11是两个字符;
 
********************************************************************************************
      好了,讲到这里相信大家都明白了吧!
                   这道题其实主要考察printf函数返回值,题目不难,但是我们很少注意。
        欢迎各位交流分享,讲解有不对之处,还望各位前辈指出。先在此谢谢啦!
 

考察printf函数返回值的更多相关文章

  1. printf函数返回值

    //返回值:正确返回输出的字符总数,错误返回负值,与此同时,输入输出流错误标志将被置值,可由指示器ferror来检查输入输出流的错误标志. #include <stdio.h> #defi ...

  2. scanf printf函数返回值

    1. scanf 函数是有返回值的,它的返回值可以分成三种情况  1) 正整数,表示正确输入参数的个数.例如执行 scanf("%d %d", &a, &b);   ...

  3. c语言main函数返回值、参数详解(返回值是必须的,0表示正常退出)

    C语言Main函数返回值 main函数的返回值,用于说明程序的退出状态.如果返回0,则代表程序正常退出:返回其它数字的含义则由系统决定.通常,返回非零代表程序异常退出. 很多人甚至市面上的一些书籍,都 ...

  4. C++函数返回值(02)

    对象作为返回值 编译器会将函数栈中的返回值数据拷贝到返回栈中 指针作为返回值 函数的返回值可以是存储某种类型数据的内存地址,称这种函数为指针函数.它们的一般定义形式如下:  类型标识符 *函数名(参数 ...

  5. 用C语言指针作为函数返回值

    转载:http://c.biancheng.net/cpp/html/3242.html C语言允许函数的返回值是一个指针(地址),我们将这样的函数称为指针函数.下面的例子定义了一个函数 strlon ...

  6. C语言:将3*4矩阵中找出行最大,列最小的那个元素。-将低于平均值的人数作为函数返回值,将低于平均分的分数放入below数组中。

    //将3*4矩阵中找出行最大,列最小的那个元素. #include <stdio.h> #define M 3 #define N 4 void fun(int (*a)[N]) { ,j ...

  7. shell调用函数返回值深入分析

    编写shell脚本过程中,我们经常会自定义一些函数,并根据函数的返回值不同来执行相应的流程,那么我们如何来获取函数的返回值呢? 首先shell中调用函数有两种方式: 第一种:value=`functi ...

  8. Python从线程获取函数返回值

    Python中利用强大的threading模块可以很容易的实现多线程开发,提高运行速度.这一般是对某个进行大量计算操作的的函数进行多线程处理,然后合并各线程的结果.获取函数返回值的方法可以如下: 1) ...

  9. 速战速决 (3) - PHP: 函数基础, 函数参数, 函数返回值, 可变函数, 匿名函数, 闭包函数, 回调函数

    [源码下载] 速战速决 (3) - PHP: 函数基础, 函数参数, 函数返回值, 可变函数, 匿名函数, 闭包函数, 回调函数 作者:webabcd 介绍速战速决 之 PHP 函数基础 函数参数 函 ...

随机推荐

  1. iOS设计模式解析(一)工厂方法

    工厂方法:定义创建对象的借口,让子类决定实例化哪一个类.工厂方法是一个类的实例化延迟到了子类 例如      :Shoes厂有两个子类(Newbalance.Nike)构建类图如下: 代码实现: #i ...

  2. Android NIO(Noblocking I/O非阻塞I/O)小结

    参考:http://www.cnblogs.com/cpcpc/archive/2011/06/27/2123009.html 对于Android的网络通讯性能的提高,我们可以使用Java上高性能的N ...

  3. highcharts:根据Y的数值范围,动态改变图形的填充颜色

    图形实例: 源代码如下:   <!DOCTYPE html><html><head><meta charset="utf-8">&l ...

  4. html5介绍 之亮点特性

    html5 兴起- 乔帮助在2010年发布的:关于对flash的思考,提到有了h5放弃 flash   1 富图形,富媒体      2 本地存储     cookie   3 LBS      基于 ...

  5. Oracle ORA-01555 快照过旧 说明

    oracle高级知识(1) ORA-01555 快照过旧,是数据库中很常见的一个错误,比如当我们的事务需要使用undo来构建CR块的时候,而此时对应的undo 已经不存在了, 这个时候就会报ORA-0 ...

  6. 如何修改Struts2 FiledError样式

    有时候,使用Struts2的<s:fielderror />标签还是比较好的.但是这个标签本来的样式实在很难看,不但换行,而且有个大大的黑点.一看就知道用了<ui><li ...

  7. Android——仿QQ聊天撒花特效

    实现这样的效果,你要知道贝塞尔曲线,何谓贝塞尔曲线?其实就是曲线,嘿嘿,关于曲线的概念大家可以去 Android绘图机制(二)——自定义View绘制形, 圆形, 三角形, 扇形, 椭圆, 曲线,文字和 ...

  8. linux 学习之九、Linux 磁盘与文件系统管理(1)

    原文地址:http://vbird.dic.ksu.edu.tw/linux_basic/0230filesystem.php#filesys 查看文件系统参数命令 dumpe2fs 盘符地址 例: ...

  9. svo:一个半直接单目视觉里程计(长期更新)

    源码:https://github.com/uzh-rpg/rpg_svo/tree/master/svo 视频:https://www.youtube.com/watch?v=2YnIMfw6bJY ...

  10. HashMap 的遍历key与value的方法

    HashMap最经常使用的使用方法是依据key增删改查value,有时候会须要知道一个HashMap有多少个keys以及这些keys都是什么,能够用以下的代码实现. 方法1: Map map = ne ...