salut a tous pourquoi on commence toujour avec ce si
static void main( args[]
pourais quelqun mexpliqer ça en detail svp et merci d'avance
salut a tous pourquoi on commence toujour avec ce si
static void main( args[]
pourais quelqun mexpliqer ça en detail svp et merci d'avance
Il faut bien que quand tu executes un programme, le système sache par où commencer. Il lui faut donc un point d'entrée identifiable et c'est la fonction main. C'est la 1ere fonction de ton programme qui sera executée.
A noter que si tu programmes sous windows, ça peut aussi bien etre winmain ou autre, mais il y a toujours une fonction de ce genre quelque soit le language.
C'est très etrange.
On m'a appris que le programme commence toujours par la fonction main. Cela est vrai. Mais on m'a aussi appris que main retourne l'etat final de l'execution.
Par consequent, main ne renvoid pas un void mais un int.
Normalement, un programme a toujours une fonction de la forme
Apres, je ne sais pas tout et il est possible qu'il existe d'autre forme. Notamment en C++, il existe :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 int main( int argc, char** argv )
Mais ce sont les deux seul forme que je connaisse
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 int main()
En fait il y a des langages où la fonction main ne renvoie rien, c'est à dire "void", tel que le langage Java.
Pourquoi en Java ça renvoie void et en C++ ça renvoie int ?
Je laisse un Java-man te répondre pour le Java, mais pour le C++, la fonction main renvoie une valeur de type entier : 0 si tout va bien, toute autre valeur si pépin il y a eu.
Sinon pour l'OP, comme on te l'a dit, la fonction main est le point de départ de tout programme, c'est la première fonction qui sera exécutée.
argc/argv permet de récupérer les arguments. Si on sait qu'on n'aura pas à les récupérer alors autant écrire main sans arguments.
Sinon en effet la norme précise bien que main doit être de type int et non void. (même si certains compilo laisse passez ça.)
Java est un langage full-object : on ne manipule pas des applications au sens C++ mais des classes "exécutables" par la machine virtuelle.Pourquoi en Java ça renvoie void et en C++ ça renvoie int ?
C'est à cette dernière qu'incombe la tâche d'interfaçage avec le système, et notamment l'envoi des codes d'erreur.
Une classe exécutable peut utiliser la méthode "System.exit(code)" pour indiquer à la JVM de renvoyer un code donné.
C# quant à lui accepte les deux versions du "Main" :
et :
Code : Sélectionner tout - Visualiser dans une fenêtre à part static int Main(...)
Code : Sélectionner tout - Visualiser dans une fenêtre à part static void Main(...)
Partager