typestar

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

  1. char y short se promueven a int antes de la aritmética.
  2. Un valor con signo comparado contra uno sin signo se vuelve sin signo.
  3. Por eso -1 < 1u es falso, lo que sorprende a todos una vez.

Palabras clave y builtins usados aquí

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.

Escribe este fragmento

Paso 7 de 7 en Variables y tipos; paso 7 de 35 en Fundamentos del lenguaje.

← Anterior Siguiente →