Turbo C ++: почему printf печатает ожидаемые значения, когда в него не передаются переменные?
В тесте с несколькими вариантами ответов был задан вопрос: каковы будут результаты следующей программы:
#include
int main(void)
{
int a = 10, b = 5, c = 2;
printf("%d %d %d\n");
return 0;
}
и варианты были различными перестановками 10, 5 и 2. По некоторым причинам, это работает в Turbo C ++, который мы используем в колледже. Тем не менее, это неt при компиляции с помощью gcc (который выдает предупреждение при включенном -Wall) или clang (с включенным -Wformat и по умолчанию выдает предупреждение) или в Visual C ++. Как и ожидалось, на выходе получаются значения мусора. Я предполагаю, что это как-то связано с тем фактом, что Turbo C ++ является 16-битным и работает на 32-битной Windows XP, или что TCC ужасен, когда дело касается стандартов.