Inne odpowiedzi i komentarze wskazują na kilka z wielu sposobów, na jakie jest to okropne, mylące i źle napisane pytanie. Ale jest inny problem, którego nikt inny jeszcze nie zidentyfikował. Pytanie brzmi:
Po deklaracji funkcji nie jest potrzebny średnik („;”). Prawda czy fałsz.
OK, spójrzmy na deklarację funkcji:
int func(); /* */
/* ^ */
/* | */
/* That whitespace is "after the function declaration". */
To wszystko jest deklaracją . Deklaracja nie jest int func()
, a potem następuje;
. Deklaracja jest int func();
zakończona białymi znakami.
Pytanie brzmi więc: czy po deklaracji potrzebny jest średnik ? Oczywiście nie. Deklaracja zawiera już średnik, który ją kończy. Średnik po deklaracji byłby bezcelowy. Z int func(); ;
kolei po deklaracji funkcji byłby średnik .
Pytanie prawie na pewno miało na celu zadanie pytania „prawda czy fałsz: ostatnim tokenem w deklaracji funkcji jest zawsze średnik”. Ale to nie jest pytanie, które napisali, ponieważ autor quizu nie myślał jasno o problemie.
Radzę całkowicie unikać quizów z języka programowania. Są okropne.
Zabawny fakt, skoro już jesteśmy na ten temat. W C # to wszystko jest legalne:
class C {}
class D {};
struct E {}
struct F {};
W języku C # deklaracja klasy lub struktury może kończyć się średnikiem lub nie, według własnego uznania. Ta dziwna mała funkcja została dodana z korzyścią dla programistów C / C ++ przybywających do C #, którzy mają na wyciągnięcie ręki, że deklaracje typu kończą się bezcelowym średnikiem; zespół projektantów nie chciał ich karać za ten nawyk. :-)