int和long有什么区别?

时间:2011-09-12 19:40:51

标签: c++

  

可能重复:
  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

我很困惑。

4 个答案:

答案 0 :(得分:4)

根据标准,int保证至少为16位,long至少为32位。在大多数32位编译器上,它们都是相同的,都是32位。但你不应该指望这一点,因为有64位,16位甚至8位编译器。

答案 1 :(得分:3)

在32位系统上,intlong之间通常没有区别。如果您想在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

一样宽