【问题标题】:Largest value in Visual Studio C or C++Visual Studio C 或 C++ 中的最大值
【发布时间】:2019-01-06 06:12:45
【问题描述】:

在 Microsoft Visual Studio 2017 Community Edition 中有以下文件:

“C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\SDK\ScopeCppSDK\SDK\include\shared\intsafe.h”

16 字节整数的最大值如下:

#define UINT128_MAX 0xffffffffffffffffffffffffffffffffui128

我还在limits文件中找到了如下代码

“C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\SDK\ScopeCppSDK\VC\include\limits.h”

#if _INTEGRAL_MAX_BITS >= 128
    // minimum signed 128 bit value
    #define _I128_MIN   (-170141183460469231731687303715884105727i128 - 1)
    // maximum signed 128 bit value
    #define _I128_MAX     170141183460469231731687303715884105727i128
    // maximum unsigned 128 bit value
    #define _UI128_MAX    0xffffffffffffffffffffffffffffffffui128
#endif

这是灰色的,好像_INTEGRAL_MAX_BITS >= 128 没有定义。

而且我在任何地方都找不到 128 位整数的数据类型。 MS C 或 C++ 可以处理这么大的值吗?我有一台新电脑,它应该能够处理这么大的整数的数学运算。 TIA。

【问题讨论】:

  • C 和 C++ 对类型没有任何上限。实现将定义自己的限制。然而,与 gcc 不同的是,MSVC 中没有 128 位整数类型,尽管其中有一些“提示”(可能是先前经验的一些残余或未来的一些东西)Can I use 128-bit integer in MSVC++?,How to enable __int128 on Visual Studio?
  • 请注意,C 允许扩展整数类型,可能是 128 位支持 128 位常量。
  • 感谢您一直以来的支持,chux。

标签: c++ c visual-studio


【解决方案1】:

没有 128 位整数的数据类型可以像 64 位及以下大小的数据类型那样工作。如果你想要它们,你必须自己实现它们。使用 GMP 或 boost::multiprecision 始终是一种选择。

【讨论】:

猜你喜欢
  • 2015-07-23
  • 2014-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-01
  • 2016-01-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多