在以下功能中:
void AddWordData(FILE* dataFile, short word, int* dc)
{
fprintf(dataFile, "%06o\n", word);
++(*dc);
}
该功能正在变短。 我在网上做了一些搜索,但发现只有短整数。 当一个函数得到一个短类型时它意味着什么? 它的数据类型是什么?
答案 0 :(得分:20)
short
是short int
的缩写。它们是同义词。 short
,short int
,signed short
和signed short int
都是相同的数据类型。 short
中究竟有多少位取决于编译器和系统,但需要at least 16 bits:
任何符合标准的编译器还必须遵守任何特定类型可接受的值范围的以下限制。请注意,这些是下限:实现可以自由地超过任何或所有这些。另请注意,char的最小范围取决于char是否被视为已签名或未签名。 ...短int:-32767到+32767。
来自Wikipedia的更多内容:
整数类型的实际大小因实现而异。唯一的保证是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位。