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.