Использование iPhone / Objective C CGFloats: 0.1 нормально или должно быть 0.1f?

При использовании метода iPhone Objective C, который принимает CGFloats, например [UIColor colorWithRed:green:blue:], важно ли добавлять f к постоянным аргументам, чтобы явно указать их как числа с плавающей запятой, например должен ли я всегда вводить 0,1f вместо 0,1 в таких случаях? Или компилятор автоматически приводит 0,1 (что обычно является двойным) к 0,1f (что является плавающим) во время компиляции? Я не хочу, чтобы эти приведения происходили во время выполнения, потому что они излишне снижают производительность.

заранее спасибо

MrMage


person MrMage    schedule 03.10.2009    source источник


Ответы (1)


Это не важно; использование константы двойной точности там, где ожидается константа одинарной точности, ничего не сломает.

Однако, если вы включили предупреждение о неявных преобразованиях из 64-битных в 32-битные и строите для 32-битных архитектур (которые, как мне кажется, включают в себя iPhone), тогда вы захотите просто использовать константы одинарной точности. чтобы избежать этого предупреждения.

(В качестве альтернативы вы можете явно отключить этот параметр, включив его по условию архитектуры для 64-разрядных архитектур. Но это в настоящее время имеет значение только в том случае, если вы также используете часть своего кода на Mac применение.)

person Peter Hosey    schedule 03.10.2009
comment
Я знаю, что ничего не ломается, но когда происходит преобразование из double в float? Во время компиляции (было бы хорошо) или во время выполнения (тогда я бы добавил f)? - person MrMage; 03.10.2009
comment
Спасибо. Ваш комментарий - настоящий ответ на мой вопрос. +1 - person MrMage; 04.10.2009