C 写入/传递带浮点数的值与不带浮点数的值是否有区别;f";后缀
如果可能的话,我想我应该少打字。任何不必要的击键都需要一点时间。 关于objective-C,我的问题是: 我能打这个吗C 写入/传递带浮点数的值与不带浮点数的值是否有区别;f";后缀,c,objective-c,C,Objective C,如果可能的话,我想我应该少打字。任何不必要的击键都需要一点时间。 关于objective-C,我的问题是: 我能打这个吗 [UIColor colorWithRed:0 green:0 blue:0 alpha:0.15]; [UIColor colorWithRed:0.45 green:0.45 blue:0.45 alpha:0.15]; 还是我必须使用f后缀 [UIColor colorWithRed:0.0f green:0.0f blue:0.0f alpha:0.15f]; [U
[UIColor colorWithRed:0 green:0 blue:0 alpha:0.15];
[UIColor colorWithRed:0.45 green:0.45 blue:0.45 alpha:0.15];
还是我必须使用f后缀
[UIColor colorWithRed:0.0f green:0.0f blue:0.0f alpha:0.15f];
[UIColor colorWithRed:0.45f green:0.45f blue:0.45f alpha:0.15f];
1) 为什么它即使没有“f”也能工作
2) 如果我需要写f,我是否仍然有“0”的异常,这意味着如果它是零,没有“f”是否仍然可以?当您键入
0
这是一个整数常量时。如果随后将其分配给float,它会自动升级:这类似于类型转换,但编译器会自动执行
当您键入0.0f
时,表示直接分配给浮点变量的“零浮点”
在这种情况下,两种方法之间没有明显区别。当您键入
0
时,这是一个整数常量。如果随后将其分配给float,它会自动升级:这类似于类型转换,但编译器会自动执行
当您键入0.0f
时,表示直接分配给浮点变量的“零浮点”
在这种情况下,这两种方法之间没有什么有意义的区别。您真正要问的是类型文本和隐式强制转换 我已经很久没有写过C了,但这让我相信它和C没有什么不同(我不能说objective-C) 问题归结为:
是值0.0
作为0
double
是值0.0f
作为0
float
是值0
作为0
int
float
时提供int
是可以的,因为编译器可以使用从int
到float
的隐式转换
但是,如果在预期为浮点值时指定double
,则不存在隐式强制转换。这是因为从double
到float
存在精度损失,编译器希望您明确表示您知道这一点
因此,如果您在编写0.0
时预期会出现float
,那么您的编译器可能会抱怨精度下降:)
p.S.
如果可能的话,我想我应该少打字。任何不必要的击键都需要一点时间
我不会太担心击键的次数。在你的生活中,你将在不清楚的代码上浪费比打字多得多的时间。如果你的时间意识很强,那么你最好的选择就是编写清晰明确的代码。你真正想问的是关于类型文字和隐式转换的问题
我已经很久没有写过C了,但这让我相信它和C没有什么不同(我不能说objective-C)
问题归结为:
0.0
是值0
作为double
0.0f
是值0
作为float
0
是值0
作为int
当需要float
时提供int
是可以的,因为编译器可以使用从int
到float
的隐式转换
但是,如果在预期为浮点值时指定double
,则不存在隐式强制转换。这是因为从double
到float
存在精度损失,编译器希望您明确表示您知道这一点
因此,如果您在编写0.0
时预期会出现float
,那么您的编译器可能会抱怨精度下降:)
p.S.
如果可能的话,我想我应该少打字。任何不必要的击键都需要一点时间
我不会太担心击键的次数。在你的生活中,你将在不清楚的代码上浪费比打字多得多的时间。如果你的时间意识很强,那么最好的办法就是编写清晰明确的代码。你问这个问题的事实表明,尽管有额外的按键,你还是应该明确。任何程序员在开始编写某些代码时最不想做的事情就是说“WTF正在这里发生”。阅读代码的频率比编写代码的频率要高,您刚刚演示过,具有您的经验水平的人可能不知道该代码的功能
是的,它会工作,不,这样做没有编译/运行时的缺点,但是代码应该为其他人而不是编译器编写——编译器不在乎你写的是什么垃圾,不管怎样,它都会做得最好。另一方面,其他程序员可能会举手离开键盘。你问这个问题的事实表明,尽管有额外的击键,你还是应该明确。任何程序员在开始编写某些代码时最不想做的事情就是说“WTF正在这里发生”。阅读代码的频率比编写代码的频率要高,您刚刚演示过,具有您的经验水平的人可能不知道该代码的功能
是的,它会工作,不,这样做没有编译/运行时的缺点,但是代码应该为其他人而不是编译器编写——编译器不在乎你写的是什么垃圾,不管怎样,它都会做得最好。另一方面,其他程序员可能会举手离开键盘。在这两种情况下,编译的代码是相同的。(使用LLVM 5.1、Xcode 5.1.1进行测试。)
编译器正在自动转换整数、float
和