Qual è la differenza tra C, C99, ANSI C e GNU C?

Ho iniziato a programmare la pratica su Codechef e sono stato confuso dalla differenza tra C e C99. Cosa significa C qui? È C89? Controlla le lingue in fondo a questo invio . Contiene sia C che C99.

Ho trovato su internet qualcosa chiamato GNU C. Esiste un C diverso per i sistemi linux / unix? Sono conformi agli standard C da ANSI? Ho anche letto in alcuni posti “C99 strict”. Cos’è questo?

Ci sono altri standard differenti di C in uso? C’è qualcosa chiamato C 4.3.2 o è la versione gcc in uso corrente?

MODIFICARE:

Questo , questo , questo ha aiutato. Cercherò di più e modificherò le cose che rimangono senza risposta.

Non sono un principiante di programmazione. So cos’è il linguaggio C. So che ci sono i diversi standard C di ANSI come C89, C99 e C11.