4 c int long-integer
在我的系统上,我得到:
sizeof ( int ) = 4
sizeof ( long ) = 4
Run Code Online (Sandbox Code Playgroud)
当我检查一个C程序时,两个int&long溢出到负面后:
a = 2147483647;
a++;
Run Code Online (Sandbox Code Playgroud)
如果两者都可以表示相同的数字范围,为什么我会使用long关键字?
int最小范围为-32767至32767,而long最小范围为-2147483647至2147483647.
如果您正在编写可能必须在不同的C实现上编译的可移植代码,那么您应该使用,long如果您需要该范围.如果你只是为一个特定的实现编写不可移植的代码,那么你是对的 - 这没关系.
C定义了许多整数类型,并指定了它们的大小关系.基本上,它说的是sizeof(long long)> = sizeof(long)> = sizeof(int)> = sizeof(short)> = sizeof(char),而sizeof(char)== 1.
但实际大小未定义,取决于您运行的体系结构.在32位PC上,int和long通常是4个字节,long long是8个字节.但是在64位系统上,long通常是8个字节,因此与int不同.
还有一种名为uintptr_t(和intptr_t)的类型,它保证与数据指针具有相同的大小.
要记住的重要一点是不要假设您可以将指针值存储在long或int中.可移植性可能比您想象的更重要,并且很可能您希望在不久的将来在64位系统上编译代码.