【发布时间】:2010-10-23 14:08:45
【问题描述】:
有人问了一个问题,我不确定我是否给出了准确的答案。
问题是,为什么使用int,为什么不使用char,为什么它们是分开的?都保留在内存中,还有位,为什么数据类型有类别?
谁能解释一下?
【问题讨论】:
有人问了一个问题,我不确定我是否给出了准确的答案。
问题是,为什么使用int,为什么不使用char,为什么它们是分开的?都保留在内存中,还有位,为什么数据类型有类别?
谁能解释一下?
【问题讨论】:
char 是最小的可寻址内存块——非常适合处理数据缓冲区,但不能保存超过 256 个不同的值(如果 char 通常是 8 位),因此对于数字不是很好计算。 int 通常比 char 大——更适合计算,但不太适合字节级操作。
【讨论】:
该标准对 char 和 int 的限制很少:
char 必须能够保存 ASCII 值,即最小 7 位(编辑:根据 C 标准,CHAR_BIT 至少为 8)。它也是最小的可寻址内存块。
int 至少为 16 位宽,并且是“推荐的”默认整数类型。此建议留给实现(您的 C 编译器)。
【讨论】:
请记住,C 有时被用作高级汇编语言 - 与低级硬件交互。您需要数据类型来匹配机器级功能,例如字节宽度的 I/O 寄存器。
来自Wikipedia, C (programming language):
C 的主要用途是“系统编程”,包括实现操作系统和嵌入式系统应用程序,因为它结合了诸如代码可移植性和效率、访问特定硬件地址的能力、将类型“双关”匹配外部强加的数据访问要求,以及对系统资源的低运行时需求。
【讨论】:
过去,计算机的内存很少。这就是您拥有不同数据类型的主要原因。如果您需要一个仅保存小数字的变量,则可以使用 8 位 char 而不是 32 位长。但是,今天的内存很便宜。因此,这个原因现在不太适用,但无论如何都卡住了。
但是,请记住,每个处理器都有一个默认数据类型,即它以特定宽度(通常为 32 位)运行。因此,如果您使用 8 位字符,则需要将该值扩展到 32 位并再次返回以进行计算。这实际上可能会稍微减慢您的算法。
【讨论】:
int 是“自然”整数类型,您应该将它用于大多数计算。
char本质上是一个字节;它是可寻址的最小内存单元。 char不是在所有平台上都是 8 位宽,尽管大多数时候都是这样。
【讨论】:
一般来说,有一些算法和设计是抽象的,而数据类型有助于实现这些抽象。例如 - 权重很有可能通常表示为一个有理数,它可以最好地以浮点/双精度形式在存储中实现,即一个具有精度部分的数字。
我希望这会有所帮助。
【讨论】: