limits.h (climits) vs limits



  • kann man ruhigen gewissens INT_MAX verwenden oder sollte/muss man std::numeric_limits<int>().max() nehmen?

    mfg foobar



  • das sollte sowohl von der performance als auch vom ergebnis her egal sein, wobei limits natürlich viel mehr informationen bietet.


  • Mod

    INT_MAX nützt in generischem Code (bzgl. des Typs) nichts, dafür ist es selbst ein konstanter Ausdruck. Abgesehen davon ist es nur eine Frage des Stils.



  • in numreic_limits sehen die werte auf den meisten systemen so oder so ähnlich aus:

    template<>
        struct numeric_limits<bool>
        {
          static const bool is_specialized = true;
    ....
          static const int digits = 1;
          static const int digits10 = 0;
    ....
       }
    

    die sind also auch konstant und werden zur compile-zeit genauso reingesetzt wie der werte von INT_MAX.


  • Mod

    ghorst schrieb:

    in numreic_limits sehen die werte auf den meisten systemen so oder so ähnlich aus:

    template<>
        struct numeric_limits<bool>
        {
          static const bool is_specialized = true;
    ....
          static const int digits = 1;
          static const int digits10 = 0;
    ....
       }
    

    die sind also auch konstant und werden zur compile-zeit genauso reingesetzt wie der werte von INT_MAX.

    Das gilt aber nicht für min und max. Das sind Funktionen, die schon für einige Kopfschmerzen gesorgt haben. Mit constexpr im nächsten Standard geht es dann so, wie sollte.


Anmelden zum Antworten