Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Regla 0x000Dh: Espacio en blanco obligatorio tras la coma separadora en listas y argumentos

Sintaxis y formato visual (0x00XX)

Universidad Nacional de Río Negro

0x000Dh: Espacio en blanco obligatorio tras la coma separadora en listas y argumentos

Enunciado normativo

DEBE dejarse exactamente un espacio en blanco después de toda coma que separe argumentos, parámetros, declaradores o elementos de una lista. NO DEBE pegarse el elemento siguiente a la coma.

La coma en sí no lleva espacio anterior (0x000Ah: Prohibición de espacios en blanco antes de separadores de sintaxis (; y ,)).

¿Por qué existe esta regla?

El problema

La coma es el separador más frecuente del código. Sin espacio posterior, foo(x,y,z) forma un bloque compacto donde los argumentos no se distinguen. Con exactamente un espacio, los elementos se separan y el ojo enumera la lista sin esfuerzo, como en el texto en prosa.

El espacio posterior es también una regla natural: en la escritura, la coma se escribe pegada a la palabra anterior y seguida de un espacio.

Consecuencias de violarla

Tipo de consecuenciaEfecto concreto
CompilaciónNinguna: el espacio no cambia la lista.
LegibilidadLos argumentos se confunden entre sí en listas largas.
ConsistenciaConvive f(a, b) con g(x,y,z).
DepuraciónEs más difícil ubicar visualmente un argumento puntual.
RevisiónEl espaciado irregular distrae de la lógica de la llamada.

Fundamento en el estándar y en la cátedra

El estándar trata la coma como separador de listas (§6.7.6, §6.5.2) y permite cualquier espaciado (§6.4). La cátedra exige un espacio posterior para que las listas se lean como enumeraciones, complementando 0x000Ah: Prohibición de espacios en blanco antes de separadores de sintaxis (; y ,) y 0x0015h: Validador de espaciado en listas de argumentos y llamadas a funciones.

Alcance y excepciones

Aplica a listas de argumentos, parámetros, declaradores, inicializadores y elementos de enum. Dentro de una cadena literal la coma es texto y no se altera. La coma del operador ((a, b)) sigue el mismo criterio de lista.

Ejemplos exhaustivos

❌ Contraejemplo 1 — Lista sin espacios

int a,b = 0;
foo(x,y,z);

Por qué falla: los elementos quedan pegados; en la declaración, además, a,b parece una sola construcción.

❌ Contraejemplo 2 — Espaciado irregular

calcular( base,tasa , plazo );

Por qué falla: la primera coma no tiene espacio posterior, la segunda tiene uno anterior (que viola 0x000Ah: Prohibición de espacios en blanco antes de separadores de sintaxis (; y ,)) y el paréntesis tiene espacios internos (0x000Eh: Prohibición de espacios en blanco internos inmediatamente tras ‘(’ o antes de ‘)’); todo el espaciado es inconsistente.

✅ Ejemplo conforme 1 — Lista separada

int a, b = 0;
foo(x, y, z);

Justificación: cada coma queda adherida al elemento anterior y seguida de un único espacio, de modo que los elementos se enumeran de un vistazo.

✅ Ejemplo conforme 2 — Firma y llamada coherentes

static int calcular_interes(int capital, double tasa, int plazo_meses)
{
    return capital;
}

int resultado = calcular_interes(monto, 0.05, 12);

Justificación: la firma y la llamada usan el mismo espaciado, lo que refuerza la correspondencia posicional entre parámetros y argumentos.

⚠️ Casos límite

Cómo detectarla

HerramientaComandoSeñal
gaffgaff check archivo.c / gaff fix archivo.cComa sin espacio posterior.
grepgrep -nE ',[^[:space:]\n]' archivo.cPosibles comas pegadas.
clang-formatclang-format --dry-run archivo.cReespaciado de listas.

Checklist de autocontrol

Reglas relacionadas