可能重复:
What is the difference between an int and a long in C++?
difference in long vs int data types in C++
在c ++中,这是int和long数据类型之间的差异。写了下面的代码:
int _tmain(int argc, _TCHAR* argv[])
{
cout<<"Int_Max = "<<INT_MAX<<endl;
cout<<"Int_Min = "<<INT_MIN<<endl;
cout<<"Long_Max = "<<LONG_MAX<<endl;
cout<<"Long_Min = "<<LONG_MIN<<endl;
}
这就是结果......
Int_Max = 2147483647
Int_Min = -2147483648
Long_Max = 2147483647
Long_Min = -2147483648
我很困惑。
答案 0 :(得分:4)
根据标准,int
保证至少为16位,long
至少为32位。在大多数32位编译器上,它们都是相同的,都是32位。但你不应该指望这一点,因为有64位,16位甚至8位编译器。
答案 1 :(得分:3)
在32位系统上,int
和long
之间通常没有区别。如果您想在32位系统上使用64位数据类型,请尝试使用long long
。
答案 2 :(得分:1)
如果要保证数据类型的大小,则应使用cstdint中的类型(在g ++中需要C ++ 0x支持,通过使用-std = c ++ 0x进行编译来启用)。例如,您可以使用int32_t和int64_t而不是int或long。如果您想要无符号数据类型,只需在开头添加“u”即可。 uint16_t可能等于平台上的unsigned short。它是一个16位无符号整数。
但是,您应该只在确切空间很重要的地方使用这些。否则,“int”通常是优选的。
有关更完整的参考,请参阅https://en.wikipedia.org/wiki/Stdint.h,其中包括其他选项,例如int_least16_t,用于至少16位宽的数据类型等。
答案 3 :(得分:0)
char:至少8位:等于一个单位
短:至少16位:至少与char
一样宽int:至少16位:至少与短
一样宽long:至少32位:至少与int
一样宽