C中的“短”数据类型是什么?

在以下function中:

void AddWordData(FILE* dataFile, short word, int* dc) { fprintf(dataFile, "%06o\n", word); ++(*dc); } 

该function正在变短。 我在网上做了一些搜索,但发现只有短整数。 函数获取短类型时意味着什么? 它的数据类型是什么?

shortshort intshort int 。 它们是同义词。 shortshort intsigned shortsigned short int都是相同的数据类型。 究竟有多少位在short取决于编译器和系统,但它必须至少有16位 :

符合标准的任何编译器还必须遵守任何特定类型可接受的值范围的以下限制。 请注意,这些是下限:实现可以自由地超过任何或所有这些。 另请注意,char的最小范围取决于char是否被视为已签名或未签名。 …短int:-32767到+32767。

更多来自维基百科 :

整数类型的实际大小因实现而异。 唯一的保证是long long不小于long,不小于int,不小于short。 此外,int应该是目标处理器最有效的整数类型。 这允许很大的灵活性:例如,所有类型都可以是64位。 但是,只有几种不同的整数宽度方案(数据模型)很受欢迎,并且由于数据模型定义了不同程序的通信方式,因此在给定的操作系统应用程序界面中使用统一的数据模型。[3]

在实践中应该注意,char通常是8位大小,short通常是16位大小,long通常是32位大小(同样是unsigned char,unsigned short和unsigned long)。 例如,这适用于20世纪90年代Sun0S 4 Unix,Microsoft MSDOS,现代Linux和用于嵌入式8位PIC微控制器的Microchip MCC18等多种平台。

编辑:

在LP64(所有64位非Windows操作系统)下:char是8位,short是16位,int是32位,long是64位,long long可以是128位。

Windows保留LLP64:char为8位,short为16位,int为32位,long为32位,long long为64位。