在C和Objective-C中,我们应该使用0.5f还是0.5?

Jer*_*y L 7 c floating-point objective-c

我看到作者使用的地方有很多:

sprite.anchorPoint = CGPointMake(1, 0.5f);
Run Code Online (Sandbox Code Playgroud)

也就是说,为什么不使用0.5而不是0.5f- 是否有使用优势0.5f

jus*_*tin 5

0.5是一个double常数,0.5f而是一个float常数.

使用0.5f有优势吗?

是.您要么为计算指定类型(读取:精度),要么避免隐式缩小(以及关联的编译器警告).

您提供的示例并不引人注目,除了避免编译器警告或只是对参数类型非常严格.

然而,对于双倍精度而言,不太明显的促销可能是昂贵的.

要回答"我们应该使用0.5f还是0.5":因为每个都有适当的时间,所以你应该在你的程序中使用两者.您应该使用适合您所需的计算/精度的类型,您传递的参数的类型,或者适用于表达式中其他值的类型.这就像整数一样 - 有适当的时间考虑宽度,并有适当的时间后缀(例如UL).有时候区别很重要,而且(自然地)它不重要的时候.


Par*_*fna 2

常量 0.5 在 Objective-C 中声明一个 double,在末尾添加一个 f - 0.5f 将常量声明为一个(32 位)浮点数。
看一下Objective-C/C帖子中数字/浮点数后面的“f”。

  • 公平地说,我认为没有任何东西可以保证“float”是 32 位的。但当今几乎所有系统都是这样做的。[另外,@JeremyL - 查看目标代码是否有任何不同的最佳方法是编译它并查看目标代码!] (2认同)