Họ không phải là một từ khóa duy nhất nếu chúng ta đi đến dự thảo chuẩn C ++ phần 2.12
Keywords bảng 4
liệt kê cả if
và else
riêng biệt và không có else if
từ khóa. Chúng ta có thể tìm thấy danh sách các từ khóa C ++ dễ tiếp cận hơn bằng cách chuyển đến phần cppreferences về từ khóa .
Ngữ pháp trong phần 6.4
cũng làm rõ điều này:
selection-statement:
if ( condition ) statement
if ( condition ) statement else statement
Các if
trong else if
là một tuyên bố sau khi else
hạn. Phần này cũng nói:
[...] Các substatement trong một lựa chọn-tuyên bố (mỗi substatement, trong
khác hình thức nếu tuyên bố) ngầm định nghĩa một phạm vi khối (3.3). Nếu câu lệnh con trong một câu lệnh lựa chọn là một câu lệnh đơn chứ không phải một câu lệnh ghép , thì nó giống như thể nó được viết lại thành một câu lệnh ghép có chứa câu lệnh con ban đầu.
và cung cấp ví dụ sau:
if (x)
int i;
can be equivalently rewritten as
if (x) {
int i;
}
Vậy ví dụ mở rộng một chút của bạn được phân tích cú pháp như thế nào?
if
statement_0;
else
if
statement_1;
else
if
statement_2 ;
sẽ được phân tích cú pháp như thế này:
if
{
statement_0;
}
else
{
if
{
statement_1;
}
else
{
if
{
statement_2 ;
}
}
}
Ghi chú
Chúng tôi cũng có thể xác định rằng else if
không thể là một từ khóa bằng cách nhận ra rằng các từ khóa là số nhận dạng và chúng tôi có thể thấy từ ngữ pháp cho một số nhận dạng trong câu trả lời của tôi cho bạn có thể bắt đầu tên lớp bằng chữ số không? rằng khoảng trắng không được phép trong số nhận dạng và do đó else if
không thể là một từ khóa duy nhất mà phải là hai từ khóa riêng biệt .
else if