VLAs und Nebeneffekt in sizeofs Operand

Ich weiß dassizeof wertet seinen Operanden niemals aus, außer in dem speziellen Fall, in dem der Operand eine VLA ist. Oder ichhabe gedach Ich wusste

void g(int n) {
    printf("g(%d)\n", n);
}

int main(void) {
    int i = 12;

    char arr[i]; // VLA

    (void)sizeof *(g(1), &arr); // Prints "g(1)"
    (void)sizeof (g(2), arr);   // Prints nothing

    return 0;
}

Was ist los

Nur für den Fall, dass dies mit GCC 5.1 auf @ kompiliert wi Coliru.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage