Mein Freund wurde beauftragt, an einem bestehenden C++ - Projekt seiner Firma zu arbeiten. Im Quellcode sah er etwas wie folgt aus:Können wir sprintf in g ++ - Implementierung überladen?
char* tmp = "882.30";
char buff[32];
sprintf(buff, "%e", tmp);
printf("TEST: %s\n", buff);
Beim Kompilieren, wurde eine Warnung ausgegeben: warning: format '%e' expects type 'double', but argument 3 has type 'char*'
aber der Ausgang war erstaunlich: 8.823000e+002
. Er war neugierig. Wie könnte es sein?
Um zu verdeutlichen, dass er ein neues kleines Projekt erstellt und er das gleiche Code-Snippet und den gleichen Compiler verwendet, aber es zeigte ein sehr unterschiedliches Ergebnis: 2.647480e-314
.
Die Umgebung: Centos 5.x, gcc 4.4.7.
Was könnte der Grund hier sein? Das bestehende Projekt hat eine Überladungsfunktion von sprintf oder Compilern?
Ich weiß. Du hast missverstanden, warum ich diese Frage gestellt habe. –
Ja, ich habe meine Antwort aktualisiert. Welche Umgebung ist '8.823000e + 002'? Die Umgebung: Centos 5.x, gcc 4.4.7.? – where23
Ja. Centos 5.x, gcc 4.4.7 –