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

Yuv*_*val 11 c short

在以下功能中:

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

该功能正在变短.我在网上做了一些搜索,但发现只有短整数.当一个函数得到一个短类型时它意味着什么?它的数据类型是什么?

Cla*_*diu 22

short是的缩写short int.它们是同义词.short,short int,signed short,和signed 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位.