C语言基本类型与其数据存储方式

本文介绍了C语言的基本数据类型,包括整数类型(char, short, int, long)及其在不同位数计算机上的存储宽度。文章通过实例探讨了整数类型的有符号和无符号的区别,并解释了内存中数据的存储方式。此外,还简单讨论了浮点类型(float, double)的存储遵循的IEEE规范。" 1737548,234528,水晶报表使用常见问题与解决方案,"['报表', '水晶报表', 'ASP.NET', '数据展示', '打印设置']
摘要由CSDN通过智能技术生成

好久没有更新博客了,最近对逆向十分着迷,信息安全的知识量是真的庞大,是时候该做一波笔记了,哈哈。

看下图,C语言数据类型分为右边四大类型,这篇博客重点讲基本类型,因为其他类型还没学呢~~

整数类型

数据类型分为 char short int long 四种

char                        8BIT                     1字节  -----宽度-----> byte

short                       16BIT                     2字节  -----宽度-----> word

     int                          32BIT                     4字节  -----宽度-----> dword

     long                       32BIT                     4字节  ---------------------------

在很多年前的16位计算机上,int类型是占2个字节的,到了32位计算机上,int类型变成了4字节,然而long没变,原来4字节,现在还是4字节,这是个历史遗留问题,平时我们使用前三个即可。

 

88:       char a = 0xFF;
0040D608 C6 45 FC FF          mov         byte ptr [ebp-4],0FFh
89:       short b = 0xFF;
0040D60C 66 C7 45 F8 FF 00    mov         word ptr [ebp-8],offset main+20h (0040d610)
90:       int c = 0xFF;
0040D612 C7 45 F4 FF 00 00 00 mov         dword ptr [ebp-0Ch],0FFh

观察88行代码以及对应下一行汇编代码,可以发现,当数据类型定义为char类型时,将0xFF放入了一块byte大小的内存(栈)中。

 

同理,short和int则放入对应的word大小和dword大小的内存空间中。
如果从数据宽度的角度讲,C语音中的char就是汇编中的byte,short就是汇编中的word,int就是汇编中的dword。

 

再观察以下代码,注意宽度

 

88:       char a = 0x12345678;
0040D608 C6 45 FC 78          mov         byte ptr [ebp-4],78h
89:       short b = 0x12345678;
0040D60C 66 C7 45 F8 78 56    mov         word ptr [ebp-8],offset main+20h (0040d610)
90:       int c = 0x12345678;
0040D612 C7 45 F4 78 56 34 12 mov         dword ptr [ebp-0Ch],12345678h
</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值