int型究竟占几个字节?

  近来有看到某论坛招聘贴问int占几个字节的问题,其实这么问是不严谨的,为什么呢?这就好比一千个人里有一千个哈姆莱特一样。It depands。
  那我们就从源头说起,看看C语言之父在《The C Programming language》怎么说的吧——

  Each compiler is free to choose appropriate sizes for its own hardware, subject only to the restriction that shorts and ints are at least 16bits, longs are at least 32bits, and short is no longer than int, which is no longer than long.

  int类型占几个字节其实是由编译器决定的,编译器又会受到所选硬件的限制。于是这里C爸爸是聪明的定义了一个规则:sort和int至少16位,long至少32位,而且short,int和long的长度关系是:16bit <=short <= 32bit <= int <= long。这里很有趣的一点是为什么起始从16bit开始呢?我们google一下CPU发展的历史便知道了——

   从1971年的4位计算到如今已来临的64位计算时代,经历了漫长的演变过程——

   1978—1995年:16位大行其道。

   1995—2005年:从16位到32位的飞跃。

   2005年—至今:64位君临天下。


  正好C爸爸写C语言这本书的时候正好是1978年,16位CPU来了,C爸爸肯定要追赶潮流啊,于是保底16bit咯。未来CPU会怎么发展呢? C爸爸don't care,不管怎么怎么变,只要遵循那条规则就好了。
 

Comments : 2

  1. hypo

    好像记得《C primer plus》里说规定了int不小于short,long不小于int之类的,至于到底多少,都是看编译环境。大一看过的了,快忘了

      1. robinxxq

        这个规则的蓝本就是 《The C Programing Language》啊亲

发表留言

人生在世,错别字在所难免,无需纠正。