c - tag - thank you en español
¿Qué significa ''u'' después de un número? (4)
Es una forma de decirle al compilador que la constante 1 debe utilizarse como un entero sin signo. Algunos compiladores asumen que cualquier número sin un sufijo como ''u'' es de tipo int. Para evitar esta confusión, se recomienda usar un sufijo como ''u'' cuando se usa una constante como un entero sin signo. También existen otros sufijos similares. Por ejemplo, para float se usa ''f''.
¿Puede decirme qué hace exactamente la ''u'' después de un número, por ejemplo:
#define NAME_DEFINE 1u
Es una forma de definir constantes enteras literales sin signo.
Los literales enteros como 1
en código C son siempre del tipo int
. int
es lo mismo que signed int
. Uno agrega u
o U
(equivalente) al literal para garantizar que no esté firmado int, para evitar varios errores inesperados y comportamientos extraños.
Un ejemplo de tal error:
En una máquina de 16 bits donde int es de 16 bits, esta expresión dará como resultado un valor negativo:
long x = 30000 + 30000;
Ambos 30000 literales son int, y como ambos operandos son int, el resultado será int. Un int firmado de 16 bits solo puede contener valores de hasta 32767, por lo que se desbordará. x
obtendrá un valor extraño y negativo debido a esto, en lugar de 60000 como se esperaba.
El código
long x = 30000u + 30000u;
Sin embargo se comportará como se espera.
significa "int sin signo", básicamente funciona como una conversión para asegurarse de que las constantes numéricas se conviertan al tipo apropiado en tiempo de compilación.