《C语言点滴》第3章 数据类型

本文详细介绍了C语言中的数据类型,包括整型和浮点型,重点讨论了整型的补码表示法以及由此引发的整型溢出问题。通过原码、反码和补码的解释,说明了溢出的原因和危害,并提供了避免溢出的方法。此外,还探讨了无符号数的使用和潜在问题,以及浮点数的有效位和比较相等问题。文章强调了理解和避免溢出的重要性,以及在编程中注意数据类型的大小和范围,以确保程序的正确性和移植性。

第3章 数据类型

《C 和指针》[14]一书提到,C 语言中仅有四种数据类型,分别为整型、浮点型、指针型和聚合类型(包含数组和结构体),剩下的类型都是从这四种类型派生或组合而来的。

例如字符型char 其实就是一个短整型,而字符串是用字符数组来保存和模拟的。本章我们主要说说整型和浮点型的相关问题。字符串、指针、数组和结构等主题,我将在本书的后面章节介绍。整型家族还分为有符号(signed)和无符号(unsigned)两种。整型数无论是否有符号,在计算机内部都是用补码来表示的。理解补码的表示方式有助于我们对整型数溢出的理解,所以先来介绍整型数的补码表示。

3.1 原码、反码和补码的解释

介绍补码之前,先简单介绍一下计算机内部使用的二进制。人类用十进制完全是因为我们有10 个手指头。如果有一天你看到一个外星人,它只有4 个手指头,那么他使用的一定是四进制,如图3-1 所示。

如果能看明白图3-1,说明你已经明白了进制和手指头的关系了。现代的计算机内部使用门电路,它们只能表示0 或者1 两个状态。如果计算机是一个人,那么他只有两个手指头,所以它使用二进制。所谓的进制,根本就不是什么神秘的东西。

图

图3-1 进制和手指头的关系

理解了计算机内部使用的二进制,下面来看看原码、反码和

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

人民邮电出版社有限公司

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值