Per il C++, in effetti, facendo l'include di

#include <limits>

puoi scrivere, ad esempio

codice:
float fmin = (std::numeric_limits<float>::min)();
float fmax = (std::numeric_limits<float>::max)();
float inf = (std::numeric_limits<float>::infinity)(); 

long lmin = (std::numeric_limits<long>::min)();
long lmax = (std::numeric_limits<long>::max)();

unsigned char bmin = (std::numeric_limits<unsigned char>::min)();
unsigned char bmax = (std::numeric_limits<unsigned char>::max)();
Il problema sul long deriva dal fatto che le operazioni sugli interi sono effettuate tramite il complemento a due e che l'everflow non viene testato. Se il compilatore lo prevede, puoi attivare l'opzione per introdurre il check dell'overflow per tali operazioni, altrimenti tale controllo lo devi fare tu ... la questione non e' sul valore "infinito" ...