如何使用 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。我们会:
- 确保它所转换到的 uint64_t 变量大于
或等于零。
- 它小于或等于 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;
}
}
在学习 C++ 时,我最近遇到了宏的用法,并了解到有许多标准宏,例如这个(以及许多其他用于整数的宏):
#include <cstdint>
UINT64_MAX
(来自https://en.cppreference.com/w/cpp/types/integer)
我不太明白它是什么,尽管这个名字本身就说明了一切(我猜是吧?)以及如何在代码中使用它。
编辑: 我知道这个宏 returns uint64_t 可以包含的最大值。我不知道应该如何以及何时使用它。如果能给个写出来的例子和一个“常见”的场景就完美了。
UINT64_MAX用于return最大值auint64_t可以包含。 一个常见的场景是将双精度转换为 uint64_t。我们会:
- 确保它所转换到的 uint64_t 变量大于 或等于零。
- 它小于或等于 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;
}
}