As outras respostas e comentários apontam várias das muitas maneiras pelas quais essa é uma pergunta horrível, enganosa e mal escrita. Mas há outro problema que ninguém mais identificou ainda. A questão é:
Um ponto e vírgula (';') não é necessário após uma declaração de função. Verdadeiro ou falso.
OK, vamos olhar para uma declaração de função:
int func(); /* */
/* ^ */
/* | */
/* That whitespace is "after the function declaration". */
Essa coisa toda é a declaração . A declaração não é int func()
e depois é seguida por a ;
. A declaração é int func();
e, em seguida, é seguida por espaço em branco.
Então, a pergunta é: é necessário um ponto e vírgula após a declaração ? Claro que não. A declaração já possui um ponto-e-vírgula e a encerrou. Um ponto e vírgula após a declaração seria inútil. Por outro lado, int func(); ;
seria um ponto e vírgula após uma declaração de função .
A pergunta quase certamente pretendia fazer a pergunta "verdadeira ou falsa: o último token em uma declaração de função é sempre um ponto e vírgula". Mas essa não é a pergunta que eles escreveram, porque o autor do questionário não estava pensando claramente sobre o problema.
Meu conselho é evitar completamente os testes de linguagem de programação. Eles são horríveis.
Curiosidade, enquanto estamos sobre o assunto. Em C #, tudo isso é legal:
class C {}
class D {};
struct E {}
struct F {};
Em C #, uma declaração de classe ou estrutura pode terminar em ponto e vírgula, ou não, a seu critério. Esse pequeno recurso estranho foi adicionado para o benefício dos programadores de C / C ++ que chegam ao C # que têm na ponta dos dedos que as declarações de tipo terminam em ponto e vírgula; a equipe de design não queria puni-los por terem esse hábito. :-)