Domanda

In limits.h, ci sono #defines per INT_MAX e INT_MIN (e SHRT_ * e * LONG_ e così via), ma solo UINT_MAX.

Dovrei definisco UINT_MIN me stesso? È 0 un valore portatile (zero positivo)?

È stato utile?

Soluzione

Se si vuole essere "typesafe" si potrebbe usare 0U, quindi se lo si utilizza in un'espressione si avrà promozioni corrette per unsigned.

Altri suggerimenti

E 'un numero intero senza segno - per definizione il suo valore più piccolo possibile è 0. Se volete qualche giustificazione, oltre solo buon senso, il serie dice:

  

6.2.6.2 tipi interi

     
      
  1. Per tipi unsigned interi diversi unsigned char, i bit della rappresentazione dell'oggetto è diviso in due gruppi: i bit di valore e bit di riempimento (non ci sono necessariamente alcuno di essi). Se ci sono N bit di valore, ogni bit deve rappresentare una potenza differente di 2 tra 1 e 2 ^ ( N -1), in modo che gli oggetti di quel tipo devono poter di rappresentare i valori da 0 a 2 ^ ( N -1) utilizzando una rappresentazione binaria pura; questo è noto come la rappresentazione valore. I valori di ogni bit di riempimento non sono specificate.
  2.   

Si potrebbe utilizzare std::numeric_limits<unsigned int>::min().

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top