typestar

Bitfields en C

Miembros de struct medidos en bits, para empacar flags y contadores chicos.

#include <stdio.h>

typedef struct {
    unsigned int visible : 1;
    unsigned int locked : 1;
    unsigned int stars : 2;
    unsigned int tour : 4;
} StepFlags;

void flags(void) {
    StepFlags f = {.visible = 1, .stars = 3, .tour = 11};

    printf("size %zu\n", sizeof f);
    printf("visible %u locked %u stars %u tour %u\n", f.visible, f.locked,
           f.stars, f.tour);

    f.stars = 4;
    printf("wrapped stars to %u\n", f.stars);
}

Cómo funciona

  1. El ancho sigue al nombre del miembro tras dos puntos.
  2. El orden de empaque y el relleno dependen de la implementación.
  3. Un tipo sin signo evita sorpresas con el bit de signo.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
19
Caracteres a escribir
401
Tokens
113
Ritmo de tres estrellas
100 tpm

Al ritmo de tres estrellas de 100 tokens por minuto, este intento toma unos 68 segundos.

Escribe este fragmento

Paso 3 de 5 en Uniones y disposición; paso 3 de 13 en Uniones, campos de bits y comportamiento indefinido.

← Anterior Siguiente →