在C语言中,对于32位计算机和64位计算机,long的大小是多少?

时间:2018-06-22 22:22:24

标签: c long-integer

对于32位平台,C中的long的大小为4字节,对于64位平台,为8字节是正确的吗?

2 个答案:

答案 0 :(得分:1)

long的大小(通常是对象的大小)由C实现决定,而不是平台程序在其上执行。

一般而言,C实现是编译器加上运行C程序所需的库和其他支持软件。 1 一个平台可以有多个C实现。实际上,一个编译器可以通过使用不同的开关来请求各种配置来实现多种C实现。

一般的C实现通常使用shortintlong的大小,这些大小与目标处理器模型(或多个模型)很好地配合,并为程序员提供了很好的选择。但是,可以将C实现设计为特殊目的,例如支持旨在用于long特定大小的旧代码。一般来说,C编译器可以针对其定义的long大小编写指令。

C标准对对象的大小施加了一些较低的限制。字符CHAR_BIT中的位数必须至少为八。 shortint必须能够表示从-32767到+32767的值,而long必须能够表示从-2147483647到+2147483647的值。它还要求long能够代表所有int值,int能够代表所有short值,并且short能够代表所有signed char个值。除此之外,C标准没有什么要求。在特定平台上,不需要intlong为特定大小。操作系统对于编程语言内部发生的事情没有发言权。操作系统设置了运行程序和与系统连接的要求,但是,在程序内部,软件可以执行其所需的任何操作。因此,编译器可以根据需要将int调用17位,而操作系统对此无权控制。

脚注

1 C 2011标准(草案N1570)在第3.12节中将实现定义为“在特定翻译环境中以特定控制选项运行的特定软件集,该特定软件在特定控制选项下执行翻译”。程序,并支持在特定执行环境中执行功能。”

答案 1 :(得分:1)

不。这取决于实现!

唯一的规则是char必须是CHAR_BIT宽,并且大小必须是:char <= short <= int <= long <= long long,并且char必须至少8位,{{1} }至少16位,short至少32位,long至少64位。

因此,实际上所有整数类型(长整型除外)都可以为32位宽,只要将long long设置为32,C标准就可以了。