是否有使用數字限制宏(例如INT64_MAX)超過std :: numeric_limits的任何參數?從我所瞭解的數值限制是在標準的,但宏只是在C99所以因此非標準。INT_ [MIN | MAX]限制宏與numeric_limits <T>
回答
如果使用C++,請使用numeric_limits
,結束。
編輯:好的,根據詹姆斯的評論,不是「結束」。 - 例外是模板和案例標籤。但是,我看不到用於分鐘或最大的案例標籤或爲他們的模板,但我想我沒有看到所有的可能性...
我想我的觀點是,numeric_limits
模板超出max()
和min()
...
在某些情況下(如case
標籤,非類型模板參數)數字常量,預計更多的有用的,numeric_limits
不支持此:numeric_limits<int>::max()
不是一個常數。在case
標籤中,您必須改用INT_MAX
。
這非常煩人,但我聽說C++ 11會解決這個問題。
Pre C++ 0x,肯定。 INT_MIN
和INT_MAX
是整型常量表達式; numeric_limits<int>::min()
和numeric_limits<int>::max()
沒有。 <climits>
是標準的C++,除非你正在處理模板(你不知道它是否是int
或long
),真的沒有理由打擾過於複雜的解決方案。 (另外:如果你正在寫的模板,不要忘了,numeric_limits<int>::min()
和numeric_limits<double>::min()
代表完全不同的屬性,如果你想的最小可能值,你需要numeric_limits<T>::is_integer ? numeric_limits<T>::min() : -numeric_limits<T>::max()
。)
其他的答案大都具有正確的信息,但它似乎需要更新C++ 11。
在C++ 11,std::numeric_limits<T>::min()
,std::numeric_limits<T>::max()
和std::numeric_limits<T>::lowest()
都宣佈constexpr
,使他們能夠在大多數相同背景的INT_MIN
和公司使用。我能想到的唯一例外是使用#
字符串標記的編譯時字符串處理。
這意味着numeric_limits
可用於標籤的情況下,模板參數,等等,你在通用的代碼中使用它的好處(在嘗試使用template<typename T> get_min(T t);
與INT_MIN
LONG_MIN
)。
C++ 11還通過添加std::numeric_limits<T>::lowest()
爲James Kanze談到的問題提供了一個解決方案,該解決方案給出了所有類型的最低有限值,而不是整數類型的最低值和浮點數的最低正值。點類型。
- 1. double.Epsilon與std :: numeric_limits <double> :: min()
- 2. java的8個流FINDE MIN/MAX限制
- 3. 如何修復這些MIN,MAX宏?
- 4. 繪製min,max函數R
- 5. 如何獲得std :: numeric_limits <char> :: min()的值?
- 6. Angularjs min max date
- 7. max()和min()python
- 8. 的LINQ(MIN && MAX)
- 9. 警告C4003和錯誤C2589和C2059:x = std :: numeric_limits <int> :: max();
- 10. `mpl :: plus <mpl :: int_ <1>,mpl :: int_ <2>> :: type`與`mpl :: int_ <3>`不是相同的類型嗎?
- 11. POSITION ORDERING,MIN AND MAX
- 12. 角js:ng-min \ ng-max
- 13. HQL Min Max,如何
- 14. std :: min/std :: max與「內在樣」
- 15. objective-c等效於C++ numeric_limits :: max()
- 16. 計算MIN和MAX函數
- 17. 使用CAST()和MAX()/ MIN()
- 18. 在MATLAB中搜索max-min
- 19. MIN和MAX SQL函數
- 20. python中的min max算法
- 21. pandas rolling max min意思是
- 22. Java 2 array min max avg?
- 23. angular 2 formbuilder min max validation
- 24. 應用CASE WHEN到MIN/MAX
- 25. Table.compute()C#MIN,MAX和AVG
- 26. 爲Random.nextInt()指定max和min?
- 27. 宏限制%
- 28. 如何處理windows.h中max宏與std中的max碰撞?
- 29. 爲什麼numeric_limit <T> :: min/max不是常量?
- 30. JMeter max。線程限制
在需要積分常量表達式的上下文中嘗試使用它。說實例化一個模板,或者在一個案例中。或者對於較小的類型,作爲數組維(頻繁出現「UCHAR_MAX + 1」)。 – 2011-04-07 10:59:51
@詹姆斯,嗯..好吧,我會編輯模板和案例標籤,不確定數組維度,雖然... – Nim 2011-04-07 12:08:46
重要說明:自從C++ 11'std :: numeric_limits :: max()'是'constexpr',所以,異常不再成立。 –
juanchopanza
2017-05-20 06:40:49