Range of values in C Int and Long 32 - 64 bits
在C语言中,int 和 long 的数据类型用来存储整数,但它们的精确大小和值的范围可以在不同的系统和编译器中有所不同。主要分为32位系统和64位系统。32位系统:int:通常在32位系统中,int 被定义为32位(4字节)。这意味着它可以存储的值范围是从 -2,147,483,648 到 2,147,483,647(即 -2^31 到 2^31 - 1)。long:在许多32位系统中,long 也被定义为32位(4字节),因此其值范围通常与int相同,即 -2,147,483,648 到 2,147,483,647。64位系统:int:在大多数的64位系统中,int 仍然被保持为32位,所以其值范围没有变化,依旧是 -2,147,483,648 到 2,147,483,647。long:在64位系统中,long 通常被定义为64位(8字节)。这样,它可以存储的值范围是从 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807(即 -2^63 到 2^63 - 1)。注意点:值得注意的是,标准C语言没有明确规定int和long的大小必须是32位或64位,这些都依赖于具体的系统和编译器实现。因此,为了编写可移植的代码,可以通过包含头文件 <limits.h> 来确定这些类型的确切大小和范围。例如,可以使用 INT_MAX 和 INT_MIN 宏来获取 int 类型的最大和最小可能值,使用 LONG_MAX 和 LONG_MIN 来获取 long 类型的最大和最小可能值。示例代码:#include <stdio.h>#include <limits.h>int main() { printf("The range of int is from %d to %d.\n", INT_MIN, INT_MAX); printf("The range of long is from %ld to %ld.\n", LONG_MIN, LONG_MAX); return 0;}这段代码会输出当前系统中 int 和 long 类型的值范围。这有助于在实际编程中了解并使用正确的数据类型范围。