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 0x000Ah: Prohibición de espacios en blanco antes de separadores de sintaxis (; y ,)

Sintaxis y formato visual (0x00XX)

Universidad Nacional de Río Negro

0x000Ah: Prohibición de espacios en blanco antes de separadores de sintaxis (; y ,)

Enunciado normativo

NO DEBE dejarse espacio en blanco antes de ; ni antes de ,. Ambos separadores DEBEN quedar inmediatamente adheridos al token anterior.

El espacio posterior a la coma se rige por 0x000Dh: Espacio en blanco obligatorio tras la coma separadora en listas y argumentos.

¿Por qué existe esta regla?

El problema

En español se escribe espacio antes de dos puntos y a veces antes de otros signos, y ese reflejo se traslada al código. En C, int a , b ; deja los separadores flotando y rompe la asociación visual entre el separador y el elemento al que pertenece. El punto y coma cierra la sentencia; debe verse pegado a ella.

La convención es una de las más fáciles de automatizar, por eso admite corrección automática: no hay ambigüedad posible sobre la forma correcta.

Consecuencias de violarla

Tipo de consecuenciaEfecto concreto
CompilaciónNinguna: el espacio es irrelevante para el parser.
LegibilidadLos separadores parecen pertenecer al token siguiente.
ConsistenciaEl archivo mezcla a , b con a, b.
MantenibilidadEl espaciado irregular introduce ruido en los diff.
RevisiónSe detecta a simple vista y distrae de la lógica.

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

El estándar clasifica los espacios como separadores sin significado (§6.4). La cátedra fija la regla para que ; y , actúen como signos de cierre y no como prefijos del token siguiente, en coherencia con 0x0003h: Un espacio antes y después de cada operador binario y 0x000Dh: Espacio en blanco obligatorio tras la coma separadora en listas y argumentos.

Alcance y excepciones

Aplica dentro de código: sentencias, cabeceras de for, listas de declaradores y argumentos. No alcanza el contenido de las cadenas literales (printf("a , b")), donde el espacio es texto. La coma del operador (a, b) sigue la misma regla.

Ejemplos exhaustivos

❌ Contraejemplo 1 — Espacio antes de ; y ,

int a , b = 10 ;

Por qué falla: ambos separadores quedan despegados del token anterior y la declaración parece compuesta de fragmentos sueltos.

❌ Contraejemplo 2 — Llamada con separadores flotantes

resultado = sumar( x , y ) ;

Por qué falla: además de los espacios antes de , y ;, hay espacios internos de paréntesis que violan 0x000Eh: Prohibición de espacios en blanco internos inmediatamente tras ‘(’ o antes de ‘)’; la combinación vuelve la línea ilegible.

✅ Ejemplo conforme 1 — Declaración limpia

int a, b = 10;

Justificación: la coma queda pegada a a y el punto y coma a 10; el espacio posterior a la coma lo aporta 0x000Dh: Espacio en blanco obligatorio tras la coma separadora en listas y argumentos.

✅ Ejemplo conforme 2 — Cabecera de for

for (size_t i = 0; i < cantidad; i++)
{
    procesar(valores[i]);
}

Justificación: cada ; cierra su cláusula sin espacio previo y las comas de parámetros quedan adheridas al elemento anterior.

⚠️ Casos límite

Cómo detectarla

HerramientaComandoSeñal
gaffgaff check archivo.c / gaff fix archivo.cEspacio antes de ; o ,.
grepgrep -nE ' +[;,]' archivo.cCandidatos a separador precedido por espacio.
clang-formatclang-format --dry-run archivo.cReubicación de los separadores.

Checklist de autocontrol

Reglas relacionadas