最大类型值之间的关系

时间:2014-10-16 08:59:55

标签: c++

在我的应用程序中,我使用存储在long int变量中的大数字。有时,我必须将它们相乘。所以我使用long long int变量来存储结果。示例:

long long int multiplication(long int a, long int b)
{
  long long int r = (long long int)a * (long long int)b;
  return r;
}

为了管理断言的前提条件,我梦见sizeof(long long int) >= 2*sizeof(long int)总是如此,但事实并非如此。似乎我唯一的保证是sizeof(long int) >= 4sizeof(long long int) >= 8,但它们之间没有规则。

管理这种情况的最佳方法是什么?

2 个答案:

答案 0 :(得分:2)

看起来问题不在于类型本身, 但是你必须处理的最大值。大多数64 位系统,longlong long都是64位,但是如果 您的代码也可以移植到32位系统,您可能需要 无论如何,将long中的值限制为32位。在那里面 没有问题,即使在某些机器上,long为64 位。真正的问题是你可以做出什么假设(以及什么 你可以确认)关于你的意见。

答案 1 :(得分:1)

您可以在cstdint

中使用类似int32_t,int64_t的内容