Regardless the compiled code, They are semantically different thing. <cond>?<true expr>:<false expr>
is an expression and if..else..
is a statement.
Although the syntax of conditional expression seems awkward, it is a good thing. You are forced to provide a <false expr>
and the two expressions are type checked.
The equivalent to if..else..
in expression-based, functional language like Lisp, Haskell is ? :
in C++, instead of if..else..
statement.