Что означает .f в 1000.f? С++

Я следую учебнику о том, как сделать игру с SDL. В определенный момент в учебном пособии мне нужно рассчитать игру FPS. Учебное пособие делает следующее:

caption << "Average Frames Per Second: " << frame / ( fps.get_ticks() / 1000.f );

Теперь я точно знаю, что делает код, кроме той части, где она делит на 1000.f. Я искал, но просто не могу найти, что означает .f.

Итак, мой вопрос: что означает .f? И почему он там?

Ответ 1

1000 является литералом int.

1000. является литералом double.

1000.f является литералом float.

Ответ 2

Это означает, что это константа float, а не константа double. Что касается эффекта, то для большинства компиляторов С++ это не будет иметь никакого эффекта, так как float будет преобразован в double, чтобы выполнить разделение.

Ответ 3

.f делает число float.

Просто посмотрите эту интересную демонстрацию:

float a = 3.2;
if ( a == 3.2 )
    cout << "a is equal to 3.2"<<endl;
else
    cout << "a is not equal to 3.2"<<endl;

float b = 3.2f;
if ( b == 3.2f )
    cout << "b is equal to 3.2f"<<endl;
else
    cout << "b is not equal to 3.2f"<<endl;

Вывод:

a не равно 3.2. b равно 3.2f

Проведите эксперимент здесь в ideone: http://www.ideone.com/WS1az

Попробуйте изменить тип переменной a от float до double, снова посмотрите результат!

Ответ 4

Сообщается, что буквальный 1000. должен рассматриваться как float. Посмотрите здесь для деталей.

Ответ 5

Это означает, что 1000.f рассматривается как float.

Ответ 6

Литерал с плавающей запятой может иметь суффикс (f, F, l или L). "f и F" указывают константу float и "l и L" a double.