gpt4 book ai didi

c++ - 在 C++ 中声明 INFINITY 的正确方法是什么?

转载 作者:搜寻专家 更新时间:2023-10-31 00:11:05 25 4
gpt4 key购买 nike

const int INFINITY = INT_MAX;

给我

expected an identifier

错误。你能告诉我我错过了什么吗?我试图包括 <cmath>但这没有帮助。

最佳答案

问题是 INFINITY 要么是 macro from the <cmath> header 。在实际编译之前,预处理器将其扩展为实现定义的值。在 GCC 的情况下(检查 g++ -E ),表达式 (__builtin_inff ()) 取代了 INFINITY ,这显然不是一个有效的标识符。

一个快速的解决办法是给你的常量一个不同的名字,这样它就不会被实现保留(不是标准宏的名字):

const int infinity = INT_MAX;

但是,当涉及到问题的标题时:

What is the right way to declare the INFINITY in c++?

引用 this Q&A 表明这个 C++ 标准库等效:

#include <limits>

const int infinity = std::numeric_limits<int>::max();

请注意,整数没有保留无穷大 (Inf),或者不是数字 (NaN) 和导致值超出 int 的操作 ' s 范围将(仍然)溢出,这与使用 IEEE float 的操作相反,根据 this Q&A,后者不会溢出并导致 Inf

关于c++ - 在 C++ 中声明 INFINITY 的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35112322/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com