พวกเขาจะไม่ได้เป็นคำหลักเดียวถ้าเราไปที่ร่าง c ++ มาตรฐานส่วน2.12
คำตาราง4
ทั้งสองรายการif
และelse
แยกจากกันและไม่มีelse if
คำหลัก เราสามารถหารายชื่อที่สามารถเข้าถึงได้มากขึ้นของ C ++ คำหลักโดยไปที่ส่วน cppreferences คำหลัก
ไวยากรณ์ในส่วน6.4
นี้ยังทำให้ชัดเจน:
selection-statement:
if ( condition ) statement
if ( condition ) statement else statement
if
ในelse if
เป็นคำสั่งดังต่อไปนี้else
ระยะ ส่วนนี้ยังกล่าวว่า:
[... ] การแทนที่ในคำสั่งการเลือก (การแทนที่แต่ละรายการใน
รูปแบบอื่นของคำสั่งif ) กำหนดขอบเขตบล็อกโดยปริยาย (3.3) ถ้าการย่อยในคำสั่งการเลือกเป็นคำสั่งเดียวและไม่ใช่คำสั่งผสมจะเหมือนกับว่ามันถูกเขียนใหม่ให้เป็นคำสั่งผสมที่มีส่วนย่อยเดิม
และให้ตัวอย่างต่อไปนี้:
if (x)
int i;
can be equivalently rewritten as
if (x) {
int i;
}
ตัวอย่างส่วนขยายเล็กน้อยของคุณมีการแยกวิเคราะห์อย่างไร?
if
statement_0;
else
if
statement_1;
else
if
statement_2 ;
จะถูกแยกวิเคราะห์ดังนี้:
if
{
statement_0;
}
else
{
if
{
statement_1;
}
else
{
if
{
statement_2 ;
}
}
}
บันทึก
นอกจากนี้เรายังสามารถระบุได้ว่าelse if
ไม่สามารถเป็นคีย์เวิร์ดเดียวได้โดยตระหนักว่าคีย์เวิร์ดเป็นตัวระบุและเราสามารถดูได้จากไวยากรณ์สำหรับตัวระบุในคำตอบของฉันคุณสามารถเริ่มต้นชื่อคลาสด้วยตัวเลขได้หรือไม่? ว่าช่องว่างไม่ได้รับอนุญาตในตัวบ่งชี้และดังนั้นจึงelse if
ไม่สามารถที่จะเป็นหนึ่งเดียวคำหลักแต่ต้องแยกออกเป็นสองคำหลัก
else if