在类 C 语言中,我们习惯于使用类似于以下的 if 语句:
if(x == 5) {
//do something
}
else if(x == 7) {
//do something else
}
else if(x == 9) {
//do something else
} else {
//do something else
}
我的问题是,编译器是否以这种方式看到 if 语句,或者它最终被解释为:
if(x == 5) {
//do something
}
else {
if(x == 7) {
//do something
}
else {
if(x == 9) {
//do something
}
else {
//do something else
}
}
}
编辑:我意识到虽然这个问题在我脑海中是有道理的,但对于其他普通民众来说,它可能听起来相当愚蠢。我更多地指的是 AST 的外观以及“else-if”语句是否有任何特殊的 AST 案例,或者是否将其编译为级联 if/else 块。