operador sizeof retorna valores diferentes para c & c ++?

Um array de caracteres é definido globalmente e uma estrutura com o mesmo nome é definida dentro de uma função. Por que o operador sizeof retorna valores diferentes para c & c ++?

char S[13];
void fun()
{
    struct S
    {
        int v;
    };
    int v1 = sizeof(S);
}

// retorna 4 em C ++ e 13 em C

questionAnswers(2)

yourAnswerToTheQuestion