Le altre risposte e commenti evidenziano molti dei molti modi in cui questa è una domanda orribile, fuorviante e mal scritta. Ma c'è un altro problema che nessun altro ha ancora identificato. La domanda è:
Un punto e virgola (';') non è necessario dopo una dichiarazione di funzione. Vero o falso.
OK, diamo un'occhiata a una dichiarazione di funzione:
int func(); /* */
/* ^ */
/* | */
/* That whitespace is "after the function declaration". */
L'intera cosa è la dichiarazione . La dichiarazione non è int func()
e quindi seguita da a ;
. La dichiarazione è int func();
e quindi è seguita da uno spazio bianco.
Quindi, la domanda è: è necessario un punto e virgola dopo la dichiarazione ? Ovviamente no. La dichiarazione contiene già un punto e virgola che l'ha terminata. Un punto e virgola dopo la dichiarazione sarebbe inutile. Al contrario, int func(); ;
sarebbe un punto e virgola dopo una dichiarazione di funzione .
La domanda aveva quasi certamente lo scopo di porre la domanda "vero o falso: l'ultimo token in una dichiarazione di funzione è sempre un punto e virgola" Ma non è questa la domanda che hanno scritto, perché l'autore del quiz non stava pensando chiaramente al problema.
Il mio consiglio è di evitare del tutto i quiz sul linguaggio di programmazione. Sono abbastanza orribili.
Curiosità, mentre siamo sull'argomento. In C #, questi sono tutti legali:
class C {}
class D {};
struct E {}
struct F {};
In C #, una dichiarazione di classe o di struttura può terminare con un punto e virgola o no, a tua discrezione. Questa strana piccola funzionalità è stata aggiunta a vantaggio dei programmatori C / C ++ che arrivano a C # e ne hanno a portata di mano le dichiarazioni di tipo che terminano con un punto e virgola inutile; il team di progettazione non ha voluto punirli per avere questa abitudine. :-)