Turbo C ++: Por que printf imprime valores esperados, quando nenhuma variável é passada para ele?

Uma pergunta foi feita em um teste de múltipla escolha: Qual será a saída do seguinte programa:

#include <stdio.h>

int main(void)
{
    int a = 10, b = 5, c = 2;

    printf("%d %d %d\n");

    return 0;
}

e as opções foram várias permutações de 10, 5 e 2. Por alguma razão, funciona no Turbo C ++, que usamos na faculdade. No entanto, isso não acontece quando compilado com gcc (que dá um aviso quando -Wall está habilitado) ou clang (que tem habilitado -Wformat e dá um aviso por padrão) ou no Visual C ++. A saída é, como esperado, valores de lixo. Meu palpite é que isso tem algo a ver com o fato de que o Turbo C ++ é de 16 bits e está sendo executado no Windows XP de 32 bits, ou que o TCC é péssimo quando se trata de padrões.

questionAnswers(5)

yourAnswerToTheQuestion