在类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的外观以及是否有任何特殊的AST情况适用于“else-if”语句,或者它将编译为级联的if/else块。