博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
求解,一道嵌入式公司面试题
阅读量:6706 次
发布时间:2019-06-25

本文共 441 字,大约阅读时间需要 1 分钟。

代码如下

int main(){	printf("%f\n", 5);	printf("%d\n", 5.01);	return 0;}

结果如下

:第一个结果0.000000

第二个结果   是一个大数。

解释如下:

首先参数5为int型,32为平台中为4字节,因此在stack中分配4字节的内存,用于存放参数5. 

然后printf()根据说明符 "%f",认为参数应该是个double型?(在printf函数中 float会自动转换成double?)因此从stack中读取了8个字节。

很显然,内存访问越界,会发生什么情况不可预料。

于是printf("%f\n", 5);有问题。

这个解释感觉有点不细致,谁能在细致的说下细节?谢谢。

第一个printf访问越界怎么结果就是0.000000了,第二个printf没有越界怎么结果是个大数?费解~~~~

转载于:https://www.cnblogs.com/XBin/archive/2012/09/24/2853628.html

你可能感兴趣的文章
应用程序 数据缓存
查看>>
TFS签入签出
查看>>
第二条:遇到多个构造器参数(Constructor Parameters)时要考虑用构建器(Builder)
查看>>
成长,没你想象的那么迫切
查看>>
ASP.NET Core 中文文档 第一章 入门
查看>>
jQuery入门(2)使用jQuery操作元素的属性与样式
查看>>
贴片电阻分类、阻值、功率、封装、尺寸
查看>>
Mqtt协议IOS端移植2
查看>>
【Eclipse】eclipse中设置tomcat启动时候的JVM参数
查看>>
10.查看npm安装信息和版本号
查看>>
国际化环境下系统架构演化
查看>>
C#跟着阿笨玩一起玩异步Task实战(一)
查看>>
Sqoop-1.4.6安装部署及详细使用介绍
查看>>
oracle 存储过程 示例
查看>>
正态分布与中心极限定理
查看>>
cf1027F. Session in BSU(并查集 匈牙利)
查看>>
Chrome 主页被篡改
查看>>
糟糕的软件设计:幻想出来的问题
查看>>
openlayers入门开发系列之批量叠加zip压缩SHP图层篇
查看>>
[观点]微软报告称开源更昂贵
查看>>