[英]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.