Operations of Relation

Il booleano FALSE (_*falso) è rappresentato da un valore intero pari a zero, mentre il booleano TRUE (_*vero) è rappresentato da qualsiasi valore diverso da zero.

Il valore delle espressioni che contengono operazioni di relazione oppure operazioni logiche è FALSE(0) o TRUE(1).

True se a è uguale a b                      a == b;
True se a non è uguale a b                  a != b;
True se a è minore di b                     a < b;
True se a è maggiore di b                   a > b;
True se a è minore o uguale a b             a <= b;
True se a è maggiore o uguale a b           a >= b;

L'uguaglianza di due numeri reali non può essere confrontata. Nella maggior parte dei casi, due numeri apparentemente identici possono essere diversi a causa di diversi valori nel 15esimo posto decimale. Per poter confrontare correttamente due numeri reali, confrontare la differenza normalizzata di questi numeri con lo zero.

Esempio:

bool CompareDoubles(double number1,double number2)
  {
   if(NormalizeDouble(number1-number2,8)==0) return(true);
   else return(false);
  }
voidOnStart()
  {
   double first=0.3;
   double second=3.0;
   double third=second-2.7;
   if(first!=third)
     {
      if(CompareDoubles(first,third))
         printf("%.16f e %.16f sono uguali",first,third);
     }
  }
// Result: 0.3000000000000000  0.2999999999999998   sono uguali

Vedi anche

Regole di Precedenza