Eine Frage wurde in einem Multiple-Choice-Test gefragt: Was ist die Ausgabe des folgenden Programms sein wird:Turbo C++: Warum druckt printf erwartete Werte, wenn keine Variablen an ihn übergeben werden?
#include <stdio.h>
int main(void)
{
int a = 10, b = 5, c = 2;
printf("%d %d %d\n");
return 0;
}
und die Entscheidungen waren verschiedene Permutationen von 10, 5 und 2. Aus irgendeinem Grund funktioniert es in Turbo C++, die wir in der Schule verwenden. Es ist jedoch nicht kompiliert mit gcc (die eine Warnung gibt, wenn -Wall aktiviert ist) oder Clam (die Wformat aktiviert hat und standardmäßig eine Warnung gibt) oder in Visual C++. Die Ausgabe ist wie erwartet Garbage-Werte. Meine Vermutung ist, dass es etwas mit der Tatsache zu tun hat, dass entweder Turbo C++ 16-Bit ist und auf 32-Bit Windows XP läuft, oder dass TCC schrecklich ist, wenn es um Standards geht.
Ausgabe kann buchstäblich alles sein, da dieser Code in Undefined Behavior resultiert. –
Ja, die ganze Compiler-Sache ist ein Ablenkungsmanöver. –
Im gcc-Format muss der Spezifizierer einen Variablennamen benötigen, Beispiel printf ("% d", x); wenn nicht, druckt printf einen Wert – sujin