以下の式の場合:-
int main()
{
unsigned ui = 1;
float fval = 2.5;
cout << sizeof(ui) << endl << sizeof(fval) << endl;
cout << typeid(ui+fval).name();
}
次の出力が得られます:-
4
4
f
ui+fval は float のようです。
ただし、float と unsigned int の両方が 4 バイトであり、すべての unsigned int 値が float 内に収まるわけではないことを考えると、fval は unsigned int に変換されるべきではないでしょうか?