繁体   English   中英

C / C ++中数据类型名称的含义

[英]Meaning of data type names in C/C++

在C和C ++中,内置整数类型的大小取决于实现。 但是,它们是否有任何预定义的预期含义,以便int可以表示机器字的大小等?

从历史上看, int被认为是机器硬件上整数的最“自然”类型。 显然,“自然”在某种程度上是主观的,但是在过去,它通常很明显,而且反正没有太多整数类型可用,因此使intlongshort大小相同是正常的做法。

由于各种原因,大多数64位平台将int 32位。 可以很容易地认为这不是最“自然的”长度,但是人们希望32位整数是默认整数,而int显然是默认整数类型。 对于体系结构来说是否最自然,是否成为默认大小是次要的。

关于字长:从历史上看,这是最自然的,但是在许多方面,尚不清楚现代机器上的“字长”是什么意思:您可以算术运算的最大字长? 往返于内存的总线传输大小? 传统上,“字长”用于表示内部寄存器的宽度(当机器拥有它们时)或基本总线传输的大小。 (尽管8088具有32位寄存器,但通常被称为8位计算机。)今天,我不会在其中添加太多含义。

上面有一些措辞,但不是很刻板:

声明为字符(char)的对象应足够大以存储实现的基本字符集的任何成员。

有五种标准的带符号整数类型:“带符号字符”,“ short int”,“ int”,“ long int”和“ long long int”。 在此列表中,每种类型提供的存储量至少与列表中位于其前面的类型相同。 (...) 普通整数具有执行环境的体系结构建议的自然大小 ,还提供了其他有符号整数类型以满足特殊需要。

也没有关于浮子尺寸的严格建议:

共有三种浮点类型:float,double和long double。 double类型至少提供与float一样高的精度,long long类型提供至少与double一样高的精度。 (...) 浮点类型的值表示形式是实现定义的。

与Java不同,C被设计为平台支持者,而不是独立平台。 与使用对给定平台最佳工作的数据类型大小相比,跨平台兼容性的优先级要低得多。 因此,C标准未指定整数类型,并且整数类型完全是平台特定的

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM