¿Qué significa “sin firmar” cuando todo está en sí mismo?

Me encontré con un código C que tiene ‘sin signo’ declarando una variable por sí misma, como esto:

unsigned crc = 0; 

Creo que esto es muy extraño porque esperaría un tipo de variable explícito aquí. Me sorprende que no haya advertencias o compiler errors (MDK-Lite 5.12).

Entonces, ¿esto es válido, y qué tipo de variable produce?

De la especificación C , sección 6.7.2:

– unsigned, o unsigned int

Lo que significa que unsigned , cuando no se especifica el tipo, se establecerá de forma predeterminada como unsigned int . Así que escribir unsigned a es lo mismo que unsigned int a .