Các câu trả lời và bình luận khác gọi ra một vài trong số nhiều cách mà đây là một câu hỏi kinh khủng, gây hiểu lầm và viết sai. Nhưng có một vấn đề khác mà chưa ai xác định được. Câu hỏi là:
Dấu chấm phẩy (';') là không cần thiết sau khi khai báo hàm. Đúng hay sai.
OK, chúng ta hãy xem một khai báo hàm:
int func(); /* */
/* ^ */
/* | */
/* That whitespace is "after the function declaration". */
Toàn bộ điều đó là tuyên bố . Khai báo không phải int func()
và sau đó là a ;
. Khai báo là int func();
và sau đó là khoảng trắng.
Vì vậy, câu hỏi là: một dấu chấm phẩy cần thiết sau khi khai báo ? Dĩ nhiên là không. Tuyên bố đã có một dấu chấm phẩy trong đó chấm dứt nó. Một dấu chấm phẩy sau khi tuyên bố sẽ là vô nghĩa. Ngược lại, int func(); ;
sẽ là một dấu chấm phẩy sau khi khai báo hàm .
Câu hỏi gần như chắc chắn có ý định đặt câu hỏi "đúng hay sai: mã thông báo cuối cùng trong khai báo hàm luôn là dấu chấm phẩy" Nhưng đó không phải là câu hỏi mà họ đã viết, vì tác giả của bài kiểm tra không suy nghĩ rõ ràng về vấn đề.
Lời khuyên của tôi là tránh hoàn toàn các câu hỏi ngôn ngữ lập trình. Họ thật kinh khủng.
Thực tế thú vị, trong khi chúng ta đang ở chủ đề này. Trong C #, tất cả đều hợp pháp:
class C {}
class D {};
struct E {}
struct F {};
Trong C #, một khai báo lớp hoặc cấu trúc có thể kết thúc bằng dấu chấm phẩy, hoặc không, theo ý của bạn. Tính năng nhỏ kỳ lạ này đã được thêm vào vì lợi ích của các lập trình viên C / C ++ đến với C #, những người có nó trong tầm tay của họ rằng các khai báo kết thúc bằng một dấu chấm phẩy vô nghĩa; nhóm thiết kế không muốn trừng phạt họ vì thói quen này. :-)