C语言中为编程者提供了3种不同长度的整数:short型、int型和long型,C语言中的字符行为方式与小整数相似。C语言的定义中对不同类型整数的相对长度作了一些规定。

  1. 三种类型的整数其长度是递减的。也就是说,short型整数容纳的值肯定能够被int型整数容纳,int型整数容纳的值也肯定能够被long型整数容纳。对于一个特定的C语言实现来说,并不需要实际支持3种不同长度的整数,但可能不会让short型整数大于int型整数,而int型整数大于long型整数。

  2. 一个普通(int类型)整数足够大以容纳任何数组下标。

  3. 字符长度由硬件特性决定。

现代大多数机器的字符长度是8位,也有一些机器的字符长度是9位。然而,现在越来越多的C语言实现中的字符长度都是16位,以能够处理诸如日语之类的语言的大字符集。

ANSI标准要求long型整数的长度至少应该是32位,而short型和int型整数的长度至少应该是16位。因为大多数机器中字符长度是8位,对这些机器而言最方便的整数长度是16位和32位,因此所有早期的C编译器也都都能够满足这些限制条件。

这些对编程实践有什么意义呢?最重要的一点,就是在这方面我们不能指望拥有任何可用的精度。在非正式的情况下,我们可以说short型和int型整数(普通整数)是16位,long型整数是32位,但即便是这些长度也是不能保证的。程序员当然可以用一个int型整数来表示一个数据表格的大小或者数组的下标。但如果一个变量需要存放可能是千万数量级的数值,又该如何呢?

要定义这样一个变量,可移植性最好的办法就是声明该变量为long型,但在这种情况下我们定义一个“新的”类型无疑更为清晰:

typedef long terabit;

而且,程序员可以用这个新类型来声明所有此类变量,最坏的情形也不过是我们只需要改动类型定义,所有这些变量的类型就自动变为正确的了。

获取更多详细资料可点击链接进群领取,谢谢支持

点击免费领取更多资料

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部