Что означает f
после цифр? Это от C или Objective-C? Есть ли разница в том, чтобы не добавлять это к постоянному числу?
CGRect frame = CGRectMake(0.0f, 0.0f, 320.0f, 50.0f);
Вы можете объяснить, почему я просто не написал:
CGRect frame = CGRectMake(0, 0, 320, 50);
objective-c
c
floating-point
typeoneerror
источник
источник
В случае сомнений проверьте вывод ассемблера. Например, напишите небольшой минимальный фрагмент, например, такой
Затем скомпилируйте его на ассемблер с
-S
опцией.Сохраните вывод ассемблера в
test.s
файл, удалите.0f
из него константы и повторите команду компиляции. Затем проделайтеdiff
новуюtest.s
и предыдущую. Думаю, это должно показать, есть ли какие-то реальные различия. Я думаю, слишком многие имеют представление о том, что, по их мнению, делает компилятор, но, в конце концов, нужно знать, как проверить любые теории.источник
-O
. Я использую i686-apple-darwin10-gcc-4.2.1 (GCC)Иногда есть разница.
источник
Он сообщает компьютеру, что это число с плавающей запятой (я предполагаю, что вы здесь говорите о c / c ++). Если после числа нет f, оно считается двойным или целым числом (в зависимости от того, есть ли десятичное число или нет).
источник
Литерал с плавающей запятой в исходном коде анализируется как double. Присвоение его переменной типа float приведет к потере точности. Большая точность, вы отбрасываете 7 значащих цифр. Постфикс «f» позволяет вам сказать компилятору: «Я знаю, что делаю, это сделано намеренно. Не пугайте меня по этому поводу».
Вероятность появления ошибки не так уж и мала. Многие программы отказались от непродуманного сравнения с плавающей запятой или предположили, что 0,1 точно представимо.
источник
То,
f
о чем вы говорите, вероятно, предназначено для того, чтобы сообщить компилятору, что он работает с float. Когда вы опускаетеf
, он обычно переводится как двойной.Оба являются числами с плавающей запятой, но
float
использует меньше битов (следовательно, меньше и менее точен), чем adouble
.источник
Это вещь C - литералы с плавающей запятой по умолчанию имеют двойную точность (double). Добавление суффикса f делает их одинарной точностью (float).
Вы можете использовать целые числа для указания значений здесь, и в этом случае это не будет иметь никакого значения, но использование правильного типа - хорошая привычка - согласованность - это вообще хорошо, и если вам нужно изменить эти значения позже, вы С первого взгляда узнаю, что это за тип.
источник
От C. Это означает буквальную константу типа float. Вы можете опустить как «f», так и «.0» и использовать целые числа в своем примере из-за неявного преобразования целых чисел в числа с плавающей запятой.
источник
Это почти наверняка из C и отражает желание использовать тип float, а не двойной. Это похоже на суффиксы, такие как L в числах, чтобы указать, что они являются длинными целыми числами. Вы можете просто использовать целые числа, и компилятор выполнит автоматическое преобразование по мере необходимости (для этого конкретного сценария).
источник
Обычно он сообщает компилятору, что значение является
float
целым числом с плавающей запятой. Это означает, что он может хранить целые числа, десятичные значения и экспоненты, например1
,0.4
или1.2e+22
.источник