在Objective-C中,是否使用CGFloat或带有后缀.f的性能差异?
我应该用Postfix f
来编写CGFloat值吗?
CGFloat fValue = 1.2;
与
CGFloat fValue = 1.2f;
我知道这个后缀定义了一个浮点值。 但是这是否有必要,是否有意义,使用这两者之间是否存在任何性能差异,或者这只是视觉呈现,所以你可以快速定义值types(例如在这种情况下浮动)?
1.2是double
; 即64位双精度浮点数。
1.2f是一个float
; 即32位单精度浮点数。
就性能而言,无关紧要,因为编译器会将文本从float
转换为double
和double
以便根据需要进行float
。 但是,当从函数中分配浮点数时,您很可能需要进行转换以避免编译器警告。
基本的区别是:
1.0或1.是一个双常数
1.0f是一个浮点常量
如果没有后缀,则其中包含小数的文字(123.0)将被视为双精度浮点数。
如果您将其分配或传递给单精度variables或参数,编译器将(应该)发出警告。 追加f
告诉编译器,您希望文字被视为单精度浮点数。