我相信如果可能,我应该少打字.任何不必要的击键都需要一点时间.在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];
Run Code Online (Sandbox Code Playgroud)
或者我必须使用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];
Run Code Online (Sandbox Code Playgroud)
1)为什么即使没有"f"也能正常工作?
2)如果我需要写f,我是否还有"0"的异常,这意味着如果它为零,没有"f"它仍然可以吗?
你真正要问的是关于类型文字和隐式转换.
我没有写过多年的C语言,但是这个引用让我相信它与C#没有什么不同(我不能谈论Objective-c)
问题归结为:
0.0是作为一个值的文字符号0double0.0f是作为一个值的文字符号0float0是作为一个值的文字符号0int供给int一个当float预期是好的,因为存在一个隐式转换从int到float编译器可以使用.
但是,如果您指定double一个时float预计,不存在隐式转换.这是因为从而失去了精度double,float并且编译器希望您明确表示您已经意识到这一点.
所以,如果你0.0在float期望的时候写,那么期望你的编译器向你抱怨精度的损失:)
PS
我相信如果可能,我应该少打字.任何不必要的击键都需要一点时间.
我不会太担心击键次数.你将浪费更多时间在生活中不清楚的代码上,而不是打字.如果你的时间很有意义,那么最好的办法就是写清楚明确的代码.