Como sizeof (array) funciona em tempo de execução?

Eu li que sizeof operador em C é interpretado em tempo de compilação e desde em compilador de tempo de compilação sabe o tamanho da matriz e seu tipo, sizeof é capaz de calcular o número de bytes ocupados pela matriz.Mas como é sizeof trabalhando para o seguinte código:

<code> #include<stdio.h>
 #include<string.h>
 int main()
 {
    int n;
    scanf("%d",&n);
    int a[n];
    int s=sizeof(a);
    printf("%d",s);
    return 0;
 }
</code>

Aqui o tamanho do array não é conhecido em tempo de compilação, então como ele está funcionando corretamente?

questionAnswers(6)

yourAnswerToTheQuestion