« Exercices en langage C/Notions de base » : différence entre les versions

Contenu supprimé Contenu ajouté
exercices beaucoup plus progressifs, n'utilisant pas des horreurs à la scanf
Ligne 24 :
 
{{Boîte déroulante|titre=Solution|contenu =
Le standard indique qu'unUn programme C commence par l'exécution d'une fonction <code>main</code>. quiIl retourneexiste unedeux valeurprototypes destandards typepour la fonction <code>main</code> : <code>int main(void)</code> et <code>int main(nombreint entierargc, char* argv[])</code>. Nous devonsutilisons doncle définirplus simple car nous n'avons pas besoin de <code>mainargc</code> ni <code>argv</code>. DeRemarquons que les deux prototypes indiquent que <code>main</code>, nousretourne un entier de type <code>int</code>. Nous retournons 0 (zéro), valeur conventionnel pour indiquer que le programme est terminé sans erreur. Voici notre '''définition''' de la fonction <code>main</code> :
 
<source lang="C">
Ligne 34 :
</source>
 
On trouve des exemples – à commencer par le ''hello world'' de Kernighan et Ritchie – où aucune valeur n'est retournée. Ce n'est pas très dangeureux, mais pas très propre. On trouve aussi des exemples plus anciens (en K&R C, le C des années 1970) où le type <code>int</code> n'est pas déclaré, car il était implicite en K&R C, et le type <code>void</code> n'existait pas encore. '''Avec un compilateur supportant le K&R C''', on peut donc écrire le programme minimal suivant :
 
<source lang="C">
Ligne 41 :
</source>
 
PlusOn communément,trouve onenfin trouvefréquemment des exemples où <code>main</code> est défini comme retournant <code>void</code>. Certains compilateurs supportent cettece extensionprototype, mais le support du '''support deprototype <code>void main(void)</code> n'est pas garanti standard''', bien qu'il ne soit pas non plus interdit :
 
<source lang="C">
/* Réponse non garantieportable, parvalable lesur standardcertains compilateurs seulement */
void main(void) {}
</source>