4 ms·
In this case, it's just that the decompiler didn't think of "else if" as a single control flow construct/keyword in the way that the original programmers did.
by thefifthsetpin 9y ago
In this case, it's just that the decompiler didn't think of "else if" as a single control flow construct/keyword in the way that the original programmers did.
What was no doubt written like this:
if(a < 1){
}else if(a < 2){
}else if(a < 3){
}else{
}
Decompiled into this:
if(a < 1){
}else{
if(a < 2){
}else{
if(a < 3){
}else{
}
}
}
- danbruc 9y agoI will try this tomorrow, I am pretty sure dotPeek can recognize and output else if. Might be a coding style option though.
- mikeash 9y agoWouldn’t “else if {“ and “else { if” compile to identical bytecode?
- ufo 9y agoSure, but the decompiler can choose to always decompile to "else if {", which is more readable and more likely to match the original source code.
- mikeash 9y agoThat's my point. The compiler's choice of "else if {" or "else { if" is unrelated to the programmer's choice.
- danbruc 9y agoIt does and at least the current dotPeek 2017.2.2 decompiles it to else if and does, other than I thought, not allow to customize it.
- mikeash 9y agoObviously whatever decompiler was used here decided to do it the other way.