В чем разница между sizeof(3.0) и sizeof(3.0f)
Я ожидал, что оба они дадут один и тот же результат (sizeof float) ... но он другой.
В 32-битной машине, компилятор gcc, sizeof(3.0f) => 4 sizeof(3.0) => 8
Почему так?
В чем разница между sizeof(3.0) и sizeof(3.0f)
Я ожидал, что оба они дадут один и тот же результат (sizeof float) ... но он другой.
В 32-битной машине, компилятор gcc, sizeof(3.0f) => 4 sizeof(3.0) => 8
Почему так?
Потому что 3.0 — это дубль. См. Синтаксис C Типы с плавающей запятой.
Константы с плавающей запятой могут быть записаны в десятичной системе счисления, например 1.23. Можно использовать научную запись, добавляя e или E с последующим десятичным показателем степени, например. 1.23e2 (имеет значение 123). Требуется либо десятичная точка, либо показатель степени (в противном случае число является целочисленной константой). C99 представил шестнадцатеричные константы с плавающей запятой, которые следуют аналогичным правилам, за исключением того, что они должны иметь префикс 0x и использовать p для указания шестнадцатеричной степени. Как десятичные, так и шестнадцатеричные константы с плавающей запятой могут иметь суффикс f или F для обозначения константы типа float, l или L для обозначения типа long double или оставлять без суффикса для константы типа double.
3.0 это double
, а не float
.
doubles
в два раза шире, чем float
s.
EDIT: 3.0d только на C#
double
в два раза шире float
; Однако C не требует IEEE754.
- person M.M; 04.05.2017