una - tipos de variables en c++ y sus rangos
¿Constante hexadecimal sin signo en C? (3)
El número en sí siempre se interpreta como un número no negativo. Las constantes hexadecimales no tienen un signo ni ninguna forma inherente de expresar un número negativo. El tipo de la constante es el primero de estos que puede representar su valor:
int
unsigned int
long int
unsigned long int
long long int
unsigned long long int
¿C trata las constantes hexadecimales (por ejemplo, 0x23FE) y la firma o sin firma int?
Los trata como int
literales (básicamente, como int firmado). Para escribir un literal sin firmar simplemente agregue u
al final:
0x23FEu
Según cppreference , el tipo del literal hexadecimal es el primer tipo en la siguiente lista en la que puede caber el valor.
int
unsigned int
long int
unsigned long int
long long int(since C99)
unsigned long long int(since C99)
Depende de cuán grande sea tu número. Si su número es más pequeño que INT_MAX
, entonces es de tipo int
. Si su número es mayor que INT_MAX
pero más pequeño que UINT_MAX
, es de tipo unsigned int
, y así sucesivamente.
Como 0x23FE
es más pequeño que INT_MAX
(que es 0x7FFF
o mayor), es de tipo int
.
Si desea que no esté firmado, agregue una u
al final del número: 0x23FEu
.