W językach C-podobnych, jesteśmy przyzwyczajeni do if podobne do następujących:w jaki sposób C-jak kompilator interpretować if
if(x == 5) {
//do something
}
else if(x == 7) {
//do something else
}
else if(x == 9) {
//do something else
} else {
//do something else
}
Moje pytanie brzmi, czy kompilator zobaczyć, że if w ten sposób, czy też w końcu jest interpretowany jak:
if(x == 5) {
//do something
}
else {
if(x == 7) {
//do something
}
else {
if(x == 9) {
//do something
}
else {
//do something else
}
}
}
EDIT: zdałem sobie sprawę, że choć pytanie ma sens w mojej głowie, to prawdopodobnie brzmiał raczej głupi do reszty populacji ogólnej. Chodzi mi bardziej o to, jak wyglądałby AST i czy istniały jakieś specjalne przypadki AST dla instrukcji "else-if" lub czy byłby skompilowany jako blok kaskadowy if/else.
Żadne z nich nie jest konwertowane na inne. Każdy jest konwertowany do formatu wewnętrznego, który jest taki sam. Jakie jest twoje praktyczne pytanie programistyczne? –
Somebody pleasr wysyła kod pseudo-montażowy tego, co większość kompilatorów prawdopodobnie wyprowadza z bloku if/else. –
Język C będzie kompilowany do różnych reprezentacji w zależności od celu/kompilatora/etc. – maxwellb