gpt4 book ai didi

c - 有或没有 float "f"后缀的写入/传递值有区别吗?

转载 作者:太空宇宙 更新时间:2023-11-04 00:30:11 24 4
gpt4 key购买 nike

如果可能的话,我认为我应该少打字。任何不必要的击键都会花费一些时间。在 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];
[UIColor colorWithRed:0.45f green:0.45f blue:0.45f alpha:0.15f];

1) 为什么即使没有“f”它也能工作?

2) 如果我需要写 f,我是否仍然有“0”的异常(exception),这意味着如果它为零,没有“f”是否仍然可以?

最佳答案

您真正要问的是类型文字和隐式转换。

我已经很久没有写过 C 语言了,但是 this reference让我相信它与 C# 没有什么不同(我不能谈论 objective-c)

问题归结为:

  • 0.0literal 表示值 0 作为 double
  • 0.0fliteral 表示值 0float
  • 0literal 表示值 0int

在需要 float 时提供 int 是可以的,因为存在来自 int隐式转换编译器可以使用的float

但是,如果在需要 float 时指定了 double,则没有隐式转换。这是因为从 doublefloat 存在精度损失,编译器希望您明确说您知道这一点。

因此,如果您在需要 float 时编写 0.0,您的编译器会提示您丢失了精度:)


附言

I believe I should type less if it's possible. Any unnecessary keystroke takes a bit a time.

我不会太担心击键次数。与打字相比,您在生活中浪费在不清晰代码上的时间要多得多。如果您有时间意识,那么最好的办法是编写清晰明确的代码。

关于c - 有或没有 float "f"后缀的写入/传递值有区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23033661/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com