В других ответах и комментариях упоминается несколько причин, по которым это ужасный, вводящий в заблуждение и плохо написанный вопрос. Но есть еще одна проблема, которую еще никто не определил. Вопрос в том:
Точка с запятой (';') не требуется после объявления функции. Правда или ложь.
Хорошо, давайте посмотрим на объявление функции:
int func(); /* */
/* ^ */
/* | */
/* That whitespace is "after the function declaration". */
Все это декларация . Декларация не int func()
затем следуют;
. Объявление int func();
и затем следует пробел.
Итак, вопрос: нужна ли точка с запятой после объявления ? Конечно нет. Декларация уже содержит точку с запятой, которая завершила ее. Точка с запятой после объявления будет бессмысленной. Напротив, int func(); ;
будет точка с запятой после объявления функции .
Вопрос был почти наверняка предназначен для того, чтобы задать вопрос «истина или ложь: последний токен в объявлении функции - это всегда точка с запятой». Но это не тот вопрос, который они написали, потому что автор теста не думал четко о проблеме.
Мой совет - вообще избегать тестов по языку программирования. Они довольно ужасны.
Интересный факт, пока мы на эту тему. В C # все это законно:
class C {}
class D {};
struct E {}
struct F {};
В C # объявление класса или структуры может заканчиваться точкой с запятой или нет по вашему усмотрению. Эта странная небольшая функция была добавлена в пользу программистов на C / C ++, пришедших на C #, которые имеют под рукой, чтобы объявления типов заканчивались бессмысленной точкой с запятой; команда разработчиков не хотела наказать их за эту привычку. :-)