最近偶然间见了这样一道题: 
 #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. HDU1789(Doing Homework again)题解

    HDU1789(Doing Homework again)题解 以防万一,题目原文和链接均附在文末.那么先是题目分析: [一句话题意] 给定任务分数和其截止日期,每日可完成一任务,输出当罚分尽可能小时 ...

  2. class属性多个样式的用法

    今天看到一个非常好用的样式用法,给已经在睡梦中苏醒的你们来一段代码头脑风暴.大家都知道现在div+css布局的使用已经不是可以用潮流来概括的了,换个词应该是:普及.以前的表格布局现在是少之极少,因为表 ...

  3. java改变图片文件尺寸

    package test.common; import java.awt.Graphics; import java.awt.Image; import java.awt.image.Buffered ...

  4. 了解单位em和px的区别

    这里引用的是Jorux的“95%的中国网站需要重写CSS”的文章,题目有点吓人,但是确实是现在国内网页制作方面的一些缺陷.我一直也搞不清楚px与em之间的关系和特点,看过以后确实收获很大.平时都是用p ...

  5. usb驱动开发篇简易介绍

    我这里重点的介绍如何写驱动程序,对于一些应用程序我就不做介绍了,因为我对于那些高层的东西写得很少.倘若再讲,有班门弄斧之嫌,呵呵! 作为WIN98和WIN2K推荐的一项新技术来说,USB的驱动程序和以 ...

  6. WIN ERROR:C:\Windows\System32\<LANG_NAME>\mstsc.exe.MUI

    Issue: When you upgrade Win7, you may found your remote desktop will not work. You may get following ...

  7. C语言的本质(6)——位运算

    位运算是指按二进制进行的运算.在系统软件中,常常需要处理二进制位的问题.C语言提供了6个位操作运算符.这些运算符只能用于整型操作数,即只能用于带符号或无符号的char,short,int与long类型 ...

  8. 本地/远程Service 和Activity 的交方式(转)

    android SDK提供了Service,用于类似*nix守护进程或者windows的服务. Service有两种类型: 本地服务(Local Service):用于应用程序内部 远程服务(Remo ...

  9. POJ——字符串插入

    2:字符串插入 查看 提交 统计 提问 总时间限制:  1000ms  内存限制:  65536kB 描述 有两个字符串str和substr,str的字符个数不超过10,substr的字符个数为3.( ...

  10. 优步北京B组(8月10日-8月16日奖励规则)

    奖励政策: [优步北京B组] 定义为2015年7月20日前激活的部分司机(以优步后台数据显示为准) 滴滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机( ...