在什么情况下可以在C中使用long int

时间:2013-04-08 04:40:51

标签: c int long-integer

在我的机器中,我得到以下结果:

sizeof(long) = 8

sizeof(long int) = 8

在哪里使用long int,为什么不使用int

2 个答案:

答案 0 :(得分:5)

如您的评论所示,您提供的示例与您提出的问题无关。如果你的问题是:

  

所以我的问题是在哪里使用long int,为什么不使用 long

...然后答案很简短:使用您选择的任何一个,因为它们是等效的。

以下是您提出的问题,然后是答案:

  

所以我的问题是在哪里使用long int,为什么不使用 int

int保证能够存储至少在-32767和32767范围内的值。实现可能会做出允许它存储超出该范围的值的决策,但不是'要求。

long intlong保证能够至少存储-2147483647和2147483647范围内的值。同样,实现可能会做出允许它存储的决策超出该范围的值,但不是必需的。

因此,如果您对开发便携式软件感兴趣,那么对于不希望存储超出该最小范围的值的对象使用int是有意义的(-32767 .. 32767 )int。同上long

如果您对开发便携式软件不感兴趣,并且只关心自己的实现,请使用最符合您要求的任何类型。您可以通过查看int来审核INT_MININT_MAX以及<limits.h>,查看longLONG_MIN,从而获得LONG_MAX的实施范围}。

请注意,sizeof整数类型不一定是其范围的精确反映,因为可能存在填充位和负零。

答案 1 :(得分:0)

请注意,即使在您置换单词之前,以下所有内容都表示相同的类型:

  • long
  • long int
  • signed long int
  • signed long

通过排列,您可以:

long            l0;
long int        l1;
int long        l2;

signed long int l3;
signed int long l4;
long signed int l5;
long int signed l6;
int signed long l7;
int long signed l8;

signed long     l9;
long signed     lA;

大多数时候,大多数理智的人只是简单地写long来表示这种类型。

您的实际问题是关于何时使用long int以及何时使用int。从技术上讲,int保证的值范围是±32,767(或±(2 15 -1))。如果您需要大于此值的值,则应使用long。但是,您经常发现int的范围为±(2 31 -1)(或多或少)。有时,long的范围与int相同(32位系统; 64位Windows);那么使用longint的主要原因是将接口与特定API匹配(因为类型仍然是不同的,即使它们支持相同的范围)。有时,long的范围是±(2 63 -1)(除了64位Windows之外的64位系统);如果您需要的范围大于long,则可以使用int。不过,您也可以考虑使用<inttypes.h><stdint.h>中的“可移植”类型,例如int32_tint64_t。但是,如果API使用不同的类型,则应该使用API​​的类型。

如果您打算询问何时使用longlong int,那么这是一个品味问题。我会毫不犹豫地使用普通long。除非有一个令人信服的理由与其他声明对称,我不会使用其他任何东西。