C语言中的“short”数据类型是什么?

14
在以下函数中:
void AddWordData(FILE* dataFile, short word, int* dc)
{
    fprintf(dataFile, "%06o\n", word);
    ++(*dc);
} 

该函数正在获取short类型。我在网上进行了一些搜索,但只找到了short int。

当一个函数获取short类型时,这意味着它将接受一个16位的整数值。short是C语言中的数据类型之一,其大小为2个字节。


在编程过程中出现了另一个问题,即在写入“%06o\n”时会打印什么内容。 - Yuval
3
%06o\n 这将在八进制中添加6个填充“0”,并在末尾打印一个换行符('\n')。 - user123
1个回答

29

shortshort int的缩写,它们是同义词。 shortshort intsigned shortsigned short int都是相同的数据类型。一个short变量占用多少位取决于编译器和系统,但必须至少有16位

符合标准的编译器还必须尊重特定类型接受值范围的以下限制。请注意,这些是下限:实现可以超过这些限制中的任何一个或全部。还要注意,字符的最小范围取决于字符是被认为是带符号的还是无符号的... short int:-32767到+32767。

更多信息请参见Wikipedia

整数类型的实际大小因实现而异。唯一的保证是long long的大小不小于long,long的大小不小于int,int的大小不小于short。此外,int应该是目标处理器最有效的整数类型。这样就可以具有很大的灵活性:例如,所有类型都可以是64位。然而,只有几种不同的整数宽度方案(数据模型)很流行,并且由于数据模型定义了不同程序之间的通信方式,在给定操作系统应用程序接口中使用统一的数据模型。

实际上要注意的是,char通常为8位,short通常为16位,long通常为32位(同样适用于unsigned char、unsigned short和unsigned long)。例如,在1990年代的 Sun0S 4 Unix、Microsoft MSDOS、现代Linux和Microchip MCC18嵌入式8位PIC微控制器等各种平台上都是如此。

编辑:

在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位。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接