В настоящее время я изучаю C++-мысли C++ Primer. В главе 4.11 «Преобразование типов» я заметил, что в главе редко говорится о неявном преобразовании из интегральных типов с плавающей точкой, но в основном сосредоточено на преобразовании внутри интегральных типов. Таким образом, я не совсем уверен в правилах преобразования из целочисленного типа в тип с плавающей точкой.Почему int рекомендуется удвоить и не плавать для неявного преобразования
Мой вопрос из примера в главе,:
int ival = 3.541 + 3
Глава отметил, что 3 преобразуется в double
типа перед добавлением 3.541.
Вопрос связан с тем фактом, что для большинства интегральных типов в основном они продвигаются до int
во время неявного преобразования, если они не могут вписаться в int
. Начиная с int
и float
оба размера 4 байта, и что 3.0 и 3.541 могут идеально вписываться в float
, почему более высокий порядок double
используется для неявного преобразования в этом случае, а не float
? Означает ли это, что для любого интегрального типа для неявного преобразования типа с плавающей точкой интегральный тип будет преобразован в double
независимо от точности или размера?
Спасибо!
3.541 не может поместиться в поплавок вообще, это повторяющаяся фракция в двоичном формате. – RemcoGerlich
, если вы используете 'int ival = 3.541f + 3', тогда используется float. –