#include <iostream>
int main(){
std::cout << main << std::endl;
return 0;
}
Warum druckt 1 in der Befehlszeile?Warum std :: cout << haupt << std :: endl druckt 1?
#include <iostream>
int main(){
std::cout << main << std::endl;
return 0;
}
Warum druckt 1 in der Befehlszeile?Warum std :: cout << haupt << std :: endl druckt 1?
Ihr Programm ist schlecht formatiert. N4140:
§3.6.1/3 Die Funktion
main
darf nicht innerhalb eines Programms verwendet werden. [...]
Wenn wir behaupten, dass das Programm nicht schlecht gebildet war, die wahrscheinlichste Erklärung ist die Standard-Conversions:
§4.3/1 ein L-Wert von Funktionstyp
T
können in einen Prvalue von Typ "Zeiger aufT
umgewandelt werden." Das Ergebnis ist ein Zeiger auf die Funktion.§4.12/1 Ein Wert von arithmetischer, nicht beschnittener Aufzählung, Zeiger oder Zeiger auf Elementtyp kann in einen Pr-Wert vom Typ
bool
konvertiert werden. Ein Nullwert, Nullzeigerwert oder Nullelementzeigerwert ist konvertiert infalse
; Jeder andere Wert wird intrue
konvertiert. Bei Direkt-Initialisierung (8.5) kann ein Pr-Wert vom Typstd::nullptr_t
in einen Pr-Wert vom Typbool
konvertiert werden; Der resultierende Wert istfalse
.
Wenn Sie tun dies darauf bestehen, versuchen:
std::cout << (void*)main << std::endl;
Vergessen Sie nicht den Teil, wo 'Std: : ostream hat keinen '<<' Operator, der einen Funktionszeiger mit der Signatur 'int (*) (void)' akzeptiert, weshalb der Zeiger überhaupt in einen anderen Typ konvertiert wird. –
in [dieser Frage] (http://Stackoverflow.com/a/2741896/995714) Ich sah 'main' wurde oft verwendet –
@ LưuVĩnhPhúc Das ist C. Ich habe bisher keine Standard-Zitate gesehen, die sagen, dass es krank ist -geformt in C. –
Aus Neugier, was Sie * erwartet * diesen Code zu drucken? main ist in diesem Fall ein Funktionszeiger. –
@ JonathonReinhart: Ist es das? Denken Sie daran, 'main' ist speziell ... – Deduplicator
Es ist wahrscheinlich undefiniertes Verhalten. Du sollst nicht Haupt nennen. Siehe http://stackoverflow.com/questions/2128321/can-main-function-call-itself-in-c/2128727#2128727. – juanchopanza