簡體   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