繁体   English   中英

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

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

const int INFINITY = INT_MAX;

给我

期望一个标识符

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

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

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

const int infinity = INT_MAX;

但是,当谈到问题的标题时:

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

请参阅此问答,其中建议使用此 C++ 标准库等效项:

#include <limits>

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

请注意,整数没有保留的无穷大(Inf) 或不是数字(NaN) 并且导致值超出int范围的操作将(仍然)溢出,这与使用 IEEE 浮点数的操作相反,后者根据这个问答,不要溢出并导致Inf

INT_MAX 是 C 方式。 您应该在 C++ 中使用以下内容:-

#include <limits>

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM