c语言 float输出对齐,c语言格式输出剖析——用%d输出float类型数据与int类型%f格式输出...

C语言学习实践

摘要

本文将从C语言变量的本质,不同类型变量在内存中的存储方式,类型强制转换,格式输出4个方面阐述C语言初学阶段的一些问题。

关键词:内存存储,类型强制转换,反汇编

1. 变量

变量来源于数学,是计算机语言中能储存计算结果或能表示值抽象概念。在诸如C语言等高级语言中,变量的使用屏蔽了数据的底层细节,使得高级语言程序员不必像汇编程序员那样关心数据与硬件之间的关系。为了探究C语言中变量在内存中的存储形式,可以借助反汇编查看汇编语言以及内存数据。

2. 变量在内存中的存储形式

在内存中,无论哪种数据类型的数据,都是以相应长度的二进制码存取。从内存取数据是,如果不按照定义数据类型的方式取数据,所取数据就会错误。

2.1   用反汇编查看变量内存数据

(1)   实验代码如下。在赋值部分打点后调试,转入反汇编。

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

(2)   在监视窗口查看变量的内存地址,并在内存窗口中查看数据。

0818b9ca8b590ca3270a3433284dd417.png

整形变量_4ByteData的数据在以内存地址0x0023FA58起始的四个Byte中存放:【注意】 Intel处理器是小端机,数据高位在高地址,地位在地址。所存数据:4Bytes的十六进制数 0x12345678

0818b9ca8b590ca3270a3433284dd417.png

单精度浮点型变量fl的数据在内存中的存储:

0818b9ca8b590ca3270a3433284dd417.png

双精度浮点型变量df的数据在内存中的存储:

0818b9ca8b590ca3270a3433284dd417.png

字符型变量ch的数据在内存中存储;

0818b9ca8b590ca3270a3433284dd417.png

结论:

(1)   局部变量存储在函数栈中,且该栈向低地址生长,所以先定义的局部变

量在较高内存地址(比如_4ByteData在0x00

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值