如何使用 UINT64_MAX 标准库宏?

How do I use UINT64_MAX standard library macro?

在学习 C++ 时,我最近遇到了宏的用法,并了解到有许多标准宏,例如这个(以及许多其他用于整数的宏):

#include <cstdint>    
UINT64_MAX

(来自https://en.cppreference.com/w/cpp/types/integer

我不太明白它是什么,尽管这个名字本身就说明了一切(我猜是吧?)以及如何在代码中使用它。

编辑: 我知道这个宏 returns uint64_t 可以包含的最大值。我不知道应该如何以及何时使用它。如果能给个写出来的例子和一个“常见”的场景就完美了。

UINT64_MAX用于return最大值auint64_t可以包含。 一个常见的场景是将双精度转换为 uint64_t。我们会:

  1. 确保它所转换到的 uint64_t 变量大于 或等于零。
  2. 它小于或等于 UINT64_MAX(std::numeric_limits 显然也可以。)

这是一个例子:

#include <iostream>
#include <cstdint>

int main() {
    constexpr double a = 6383464.632463948;

    if (b >= 0 && b <= UINT64_MAX) {
        uint64_t b = (uint64_t)a; // Cast the double into the uint64_t variable
        std::cout << "Conversion from double to uint64_t is valid" << std::endl;
        std::cout << "b value is " << b << std::endl;
    }
    else {
        std::cout << "Conversion from double to uint64_t is not valid" << 
std::endl;
    }
}