Suppose I have an algol-like language, with static types and the following piece of code:
a := b + c * d;
where a
is a float, b
an integer, c
a double and d
a long. Then, the language will convert d
to long to operate with c
, and b
to double to operate with c*d
result. So, after that, the double result of b+c*d
will be converted to float to assign the result to a
. But, when it happens?, I mean, do all the conversions happens in runtime or compile time?
And if I have:
int x; //READ FROM USER KEYBOARD.
if (x > 5) {
a:= b + c * d;
}
else {
a := b + c;
}
The above code has conditionals. If the compiler converts this at compile time, some portion may never run. Is this correct?