Promoción de enteros en C
Los tipos chicos se promueven a int; mezclar con y sin signo convierte al que tiene signo.
#include <stdio.h>
void promotion(void) {
char a = 100;
char b = 100;
int sum = a + b;
signed int negative = -1;
unsigned int positive = 1;
printf("sum %d, fits in char: %d\n", sum, sum <= 127);
printf("-1 < 1u is %d\n", negative < positive);
printf("cast fixes it: %d\n", negative < (int) positive);
size_t length = 3;
for (int i = (int) length - 1; i >= 0; i--) {
printf("%d ", i);
}
printf("\n");
}
Cómo funciona
charyshortse promueven aintantes de la aritmética.- Un valor con signo comparado contra uno sin signo se vuelve sin signo.
- Por eso
-1 < 1ues falso, lo que sorprende a todos una vez.
Palabras clave y builtins usados aquí
charforintsignedsize_tunsignedvoid
El intento, en números
- Líneas
- 20
- Caracteres a escribir
- 405
- Tokens
- 125
- Ritmo de tres estrellas
- 80 tpm
Al ritmo de tres estrellas de 80 tokens por minuto, este intento toma unos 94 segundos.
Paso 7 de 7 en Variables y tipos; paso 7 de 35 en Fundamentos del lenguaje.