Les autres réponses et commentaires évoquent plusieurs des nombreuses façons dont il s'agit d'une question horrible, trompeuse et mal écrite. Mais il y a un autre problème que personne d'autre n'a encore identifié. La question est:
Un point-virgule (';') n'est pas nécessaire après une déclaration de fonction. Vrai ou faux.
OK, regardons une déclaration de fonction:
int func(); /* */
/* ^ */
/* | */
/* That whitespace is "after the function declaration". */
Tout cela est la déclaration . La déclaration ne int func()
puis suivie d' un ;
. La déclaration est int func();
suivie d'un espace blanc.
Donc, la question est: un point-virgule est-il nécessaire après la déclaration ? Bien sûr que non. La déclaration contient déjà un point-virgule qui l'a terminée. Un point-virgule après la déclaration serait inutile. En revanche, int func(); ;
serait un point-virgule après une déclaration de fonction .
La question visait presque certainement à poser la question "vrai ou faux: le dernier jeton dans une déclaration de fonction est toujours un point-virgule" Mais ce n'est pas la question qu'ils ont écrite, car l'auteur du quiz ne pensait pas clairement au problème.
Mon conseil est d'éviter complètement les quiz de langage de programmation. Ils sont assez horribles.
Fait amusant, pendant que nous sommes sur le sujet. En C #, tout cela est légal:
class C {}
class D {};
struct E {}
struct F {};
En C #, une déclaration de classe ou de structure peut se terminer par un point-virgule, ou non, à votre discrétion. Cette petite fonctionnalité étrange a été ajoutée au profit des programmeurs C / C ++ venant en C # qui ont entre les doigts que les déclarations de type se terminent par un point-virgule inutile; l'équipe de conception ne voulait pas les punir d'avoir cette habitude. :-)