, , .
:
int f(int i)
if if if
(int > int), return (int == int), return (int < int), return
, if/else , , , . AST, ( ).
Besides the pure syntax, if the compiler had to rely on "possible" evaluations as well, trying to understand the behavior of your program, it would eventually need to confuse itself and probably run into a stop problem. Even if he manages to cover some cases, it is likely to raise more questions than answer, and risk a whole new level of error.
source
share