数据的存储与覆盖问题

下图为源代码:
进行如下操作并获取结果:
分别输入0,1,2,3,4,5,6几个参数
输入0-1时,结果任为3.14取十位小数
输入2时,结果为3.13999865
输入3时,结果为2.0取十位小数
输入4-5时,结果与输入0-1时相同
输入6时,程序报错
原因分析:
此时,浮点数d存储在形式上的a[2],a[3]上
因此,改变a[0],a[1]并不改变d的值
当改变a[2],a[3]时会改变d的值,而a[3]存储的是d的高32位,因此改变a[3]的值对结果的影响更大
而改变a[4],a[5]时,虽然已经越界,但是由于栈自动分配的越界保护内存,故而不报错,结果 也不发生改变
输入6时,程序超过保护内存,程序越界
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值