Che cosa è un valore portatile per UINT_MIN?
-
29-09-2019 - |
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)?
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
- 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.
Si potrebbe utilizzare std::numeric_limits<unsigned int>::min()
.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow