Какие преобразования имеют место при оценке следующих выражений?
char cval;
int ival;
float fval;
// Assume all 3 have been set to correct values...
a) if(fval)
b) double dval = fval + ival;
c) dval + ival + cval;
Мои мысли:
a) Я предполагаю, что if
нужно значение bool
, поэтому float
получает неявное приведение к bool
.
b) Я предполагаю, что fval
повышается до double
и ival
преобразуется в double
, а затем они добавляются.1017 * в) Сначала ival
преобразуется в double
.Затем оценивается dval + ival
типа double
.Тогда cval
... Я не знаю, преобразуется ли он в double
напрямую или вначале повышается до int
.В любом случае, после этого шага к этому значению добавляется временное значение dval + ival double
.
Правильно ли мое понимание?