In C++ exista la tipul de date float/double variabila de tipul NaN (Not a Number), care e mai ciudat.
(de exemplu daca f = NaN, expresia (f != f) are rezultat 'True').
Totusi in C++ poti creea o clasa care sa substituie tipul de date pe care il vrei.
Aici e un exemplu foarte simplu:
class Int
{
public:
int value;
int Inf;
Int() { Inf = 0x7FFFFFFF; }
Int(int val) { value = val; Inf = 0x7FFFFFFF; }
Int operator+ (Int b) {
if (value != Inf && value != -Inf && b.value != Inf && b.value != -Inf) return Int(value + b.value);
if (value == Inf || value == -Inf) return Int(value);
return Int(b.value);
}
};
La fel pot fi definiti toti ceilalti operatori. (-*/)
Pentru produs si diferenta este putin mai delicat, pentru ca poti avea nedeterminari (de exemplu Inf/Inf, 0/0, Inf-Inf etc).