printf的题目
以前学习于渊老师的《自己动手写操作系统》一书的时候,也自己实现过printf,不过那是比较简单的版本。最近看《程序员面试宝典》,做到这么一道题目:
#include <stdio.h>
int main{
printf("%f",5);
printf("%d",5.01);
}
问题是输出什么?
题目不难但很细节:第一个输出0.000000,因为printf函数遇到%f,认为参数是个double类型(printf函数中float自动转为double),而5是个int型,只有四位,那么输出取8位发生越界,输出0.000000,第二个输出是只取四位,输出一个较大的数。
于是我想:printf("%f %d",5,5.01);会是什么呢
事实上输出两个都是大数,只不过第一个输出浮点数后面有很多0,第二个输出则和前面的第二个输出一样
个人观点分析其原因:
首先栈是向下生长的,而printf函数(其实是所有函数)参数入栈都是从右往左的,那么5.01先入栈,5再入,也就是5.01在高地址,5在低地址,输出%f的时候,取5所占的全部位和5.01的低四字节,输出一个大数,输出%d取高字节,也输出一个大数。http://hovertree.com/menu/c/
为了直观地看出这种分析:
我们用下面语句做测试:
printf("%f %d",5,120.5);
其中:120.5的存储格式如下:
0 100 0000 0101 1110 0010 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
低4字节全是0,高4字节是个大数,
所以输出应该是0.000000和一个大数
实际输出如下:
推荐:http://www.cnblogs.com/roucheng/p/cfenge.html
printf的题目的更多相关文章
- hdu 畅通工程系列题目
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1232 并查集水. #include <stdio.h> #include <iost ...
- 关押罪犯 and 食物链(并查集)
题目描述 S 城现有两座监狱,一共关押着N 名罪犯,编号分别为1~N.他们之间的关系自然也极不和谐.很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突.我们用"怨气值"( ...
- C语言100道经典算法
经典的100个c算法 C语言的学习要从基础,100个经典的算法真不知道关于语言的应该发在那里,所以就在这里发了,发贴的原因有2个,第一个,这东西非常值得学习,第二个,想..........嘿嘿,大家应 ...
- C语言100个经典算法
POJ上做做ACM的题 语言的学习基础,100个经典的算法C语言的学习要从基础开始,这里是100个经典的算法-1C语言的学习要从基础开始,这里是100个经典的算法 题目:古典问题:有一对兔子,从出生后 ...
- 2010noip提高组解题报告
https://www.luogu.org/problem/show?pid=1514 题目描述 在一个遥远的国度,一侧是风景秀美的湖泊,另一侧则是漫无边际的沙漠.该国的行政区划十分特殊,刚好构成一个 ...
- 【ACM/ICPC2013】树形动态规划专题
前言:按照计划,昨天应该是完成树形DP7题和二分图.最大流基础专题,但是由于我智商实在拙计,一直在理解树形DP的思想,所以第二个专题只能顺延到今天了.但是昨天把树形DP弄了个5成懂我是很高兴的!下面我 ...
- c-大量经典的c算法---ShinePans
经典的100个c算法 算法 题目:古典问题:有一对兔子.从出生后第3个月起每一个月都生一对兔子.小兔 子长到第三个月后每一个月又生一对兔子,假如兔子都不死,问每一个月的兔子总数 为多少? _____ ...
- C语言第一次博客作业---顺序机构基础练习
一.PTA实验作业 题目1.温度转换 本题要求编写程序,计算华氏温度150°F对应的摄氏温度.计算公式:C=5×(F−32)/9,式中:C表示摄氏温度,F表示华氏温度,输出数据要求为整型. 1.实验代 ...
- C语言第01次作业--顺序、分支结构
1.本章学习总结 1.1 思维导图 1.2本章学习体会及代码量学习体会 1.2.1学习体会 本周我学到了很多C语言中基础的结构和语法(见思维导图),能对一些生活中的简单问题对应编写程序解决一些这些简单 ...
随机推荐
- 老学员的学习感悟 --prince2认证有什么用
2007年一月,我加入了荷兰Irdeto(中国)有限公司.刚入公司,我就结识了PRINCE2(受控环境下的项目管理),才知道prince2是英国政府在政府项目中使用的项目管理标准.这一标准早已在欧洲广 ...
- Node.js入门:Hello World
马上开始我们第一个Node.js应用:“Hello World”.打开你的编辑器,创建一个hello.js文件.编写代码保存该文件,并通过Node.js来执行. 控制台输出 1 console.log ...
- 关于WPF中RichTextBox失去焦点后如何保持高亮显示所选择的内容
其实很简单,只要将容器控件中的附加属性FocusManager.IsFocusScope设为True就可以了 下面是个简单的用例: <Window x:Class="WpfApplic ...
- 使用node+vue.js实现SPA应用,nodevue.jsspa应用
使用node+vue.js实现SPA应用,nodevue.jsspa应用 http://www.bkjia.com/Javascript/1097617.html https://github.com ...
- 开始使用MarkDown写博客
MarkDown 标题 #h1 ##h2 ###h3 h1 h2 h3 代码段 代码段缩进4个空格即可,如下: <div class="form-group"> < ...
- php优点
PHP,一个嵌套的缩写名称,是英文超级文本预处理语言(PHP:Hypertext Preprocessor)的缩写.PHP 是一种 HTML 内嵌式的语言,是一种在服务器端执行的嵌入HTML文档的脚本 ...
- 后端码农谈前端(CSS篇)第七课:定位与浮动
一.定位: 1.定位的理解 (1)相对定位 相对定位是一个非常容易掌握的概念.如果对一个元素进行相对定位,它将出现在它所在的位置上.然后,可以通过设置垂直或水平位置,让这个元素"相对于&qu ...
- vs xamarin android StartActivity
跳转无需intent,直接给要跳转的activity的type就可以了 StartActivity(typeof(Login));
- Servlet的四种映射模式
1. 路径匹配模式 <url-pattern>/test/*</url-pattern> 2. 扩展名匹配模式 <url-pattern>*.do</url- ...
- PHP的学习--图解PHP引用
在一篇文章中看到关于PHP引用的图解,对于加深对PHP引用的理解很有帮助,在这里备份一下. 如果你对PHP的引用一点也不了解,可以先看我之前的博客:PHP的学习--PHP的引用