二进制运算符“ |” 不能应用于类型为'Int'和'UInt8'的操作数

Maxim交流

我希望or对2位映射执行简单的逻辑,但是Swift认为这是错误的:

let u: UInt8 = 0b1
let i: Int = 0b10
i | u // Binary operator '|' cannot be applied to operands of type 'Int' and 'UInit8'

符合类型推断的任何方法仍然可以正常工作吗?

我总是可以做,i | Int(u) // 3但是我认为这不是最佳选择。

马丁·R

Swift的基本原理之一是不会在类型之间隐式转换。

let u: UInt8 = 0b1
let i: Int = 0b10
i | Int(u)

迫使您考虑必要的转换以及结果应具有的类型,因此这正确的解决方案(我认为)。

让我们考虑另一个示例:

let u: UInt8 = 128
let i: Int8 = -128

应该u|i怎么办 两个都

u | UInt8(i)
Int8(u) | i

由于u不在的范围内Int8,并且i不在的范围内,因此在运行时崩溃UInt8两个都

u | UInt8(bitPattern: i)   // result is `UInt8`
Int8(bitPattern: u) | i    // result is `Int8`

会起作用,但是编译器应如何在两者之间进行选择?例如,可以将两者都转换为更大的类型

Int(u) | Int(i)

但是该类型有些武断,怎么能从编译器中自动推断出来呢?Int64+UInt64参数的“较大类型”是什么?

这就是为什么我认为显式转换是正确的解决方案。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

二进制运算符'|' 不能应用于类型为'Int'和'UInt8'的操作数

来自分类Dev

二进制运算符“ .. <”不能应用于类型为“ Int”和“ CGFloat”的操作数

来自分类Dev

二进制运算符'-='不能应用于类型'CGFloat'和'Int'的操作数

来自分类Dev

二进制运算符'〜='不能应用于类型为'String'和'String?'的操作数

来自分类Dev

Swift 2:二进制运算符'=='不能应用于类型为'()?'的操作数 和“布尔”

来自分类Dev

二进制运算符的类型为'int'和'double(double *,double *,int)'的无效操作数

来自分类Dev

运算符“ &&”不能应用于类型为“ int”和“ bool”的操作数

来自分类Dev

错误:二进制运算符'/'的类型为'int'和'float *'的无效操作数

来自分类Dev

二进制运算符+不能应用于CGfloat int类型的操作数

来自分类Dev

二进制运算符'*'不能应用于'SCNVector3'和'Double'类型的操作数

来自分类Dev

二进制运算符'>'不能应用于'(String?)'和'String?'类型的操作数

来自分类Dev

二进制运算符+不能应用于两个int操作数

来自分类Dev

二进制运算符+ =不能应用于两个Int操作数

来自分类Dev

二进制运算符+ =不能应用于两个Int操作数

来自分类Dev

运算符'> ='不能应用于类型'System.DateTime?'的操作数 和'int'

来自分类Dev

运算符'!='不能应用于类型'Task'和'int'的操作数

来自分类Dev

运算符'=='不能应用于错误类型'int'和'string'的操作数

来自分类Dev

运算符'> ='不能应用于类型'System.DateTime?'的操作数 和'int'

来自分类Dev

运算符+不能应用于IntPtr和int类型的操作数-.Net 3.5

来自分类Dev

tableviewcell的解析/快速问题“二进制运算符'=='不能应用于类型为cell和nil的操作数”

来自分类Dev

二进制运算符'=='不能应用于类型为'String!'的操作数 和Swift 2 Xcode 7中的'[String]'

来自分类Dev

二进制运算符“ +”不能应用于Swift中类型为“ CGFloat”和“ CGPoint”的操作数

来自分类Dev

二进制运算符'=='不能应用于类型为'String!'的操作数 和Swift 2 Xcode 7中的'[String]'

来自分类Dev

运算符'=='不能应用于类型为'int?'的操作数 和where子句上的“字符串”

来自分类Dev

二元运算符“..<”不能应用于“Int”和“Int?”类型的操作数

来自分类Dev

二元运算符“==”不能应用于“(Any) -> Int”和“Int”类型的操作数

来自分类Dev

二元运算符“/”不能应用于“UIColor”和“Int”类型的操作数

来自分类Dev

函数错误:“二元运算符‘+’不能应用于‘Double’和‘Int’类型的操作数”

来自分类Dev

错误:二元运算符“-=”不能应用于“Int?”类型的操作数 和'国际'

Related 相关文章

  1. 1

    二进制运算符'|' 不能应用于类型为'Int'和'UInt8'的操作数

  2. 2

    二进制运算符“ .. <”不能应用于类型为“ Int”和“ CGFloat”的操作数

  3. 3

    二进制运算符'-='不能应用于类型'CGFloat'和'Int'的操作数

  4. 4

    二进制运算符'〜='不能应用于类型为'String'和'String?'的操作数

  5. 5

    Swift 2:二进制运算符'=='不能应用于类型为'()?'的操作数 和“布尔”

  6. 6

    二进制运算符的类型为'int'和'double(double *,double *,int)'的无效操作数

  7. 7

    运算符“ &&”不能应用于类型为“ int”和“ bool”的操作数

  8. 8

    错误:二进制运算符'/'的类型为'int'和'float *'的无效操作数

  9. 9

    二进制运算符+不能应用于CGfloat int类型的操作数

  10. 10

    二进制运算符'*'不能应用于'SCNVector3'和'Double'类型的操作数

  11. 11

    二进制运算符'>'不能应用于'(String?)'和'String?'类型的操作数

  12. 12

    二进制运算符+不能应用于两个int操作数

  13. 13

    二进制运算符+ =不能应用于两个Int操作数

  14. 14

    二进制运算符+ =不能应用于两个Int操作数

  15. 15

    运算符'> ='不能应用于类型'System.DateTime?'的操作数 和'int'

  16. 16

    运算符'!='不能应用于类型'Task'和'int'的操作数

  17. 17

    运算符'=='不能应用于错误类型'int'和'string'的操作数

  18. 18

    运算符'> ='不能应用于类型'System.DateTime?'的操作数 和'int'

  19. 19

    运算符+不能应用于IntPtr和int类型的操作数-.Net 3.5

  20. 20

    tableviewcell的解析/快速问题“二进制运算符'=='不能应用于类型为cell和nil的操作数”

  21. 21

    二进制运算符'=='不能应用于类型为'String!'的操作数 和Swift 2 Xcode 7中的'[String]'

  22. 22

    二进制运算符“ +”不能应用于Swift中类型为“ CGFloat”和“ CGPoint”的操作数

  23. 23

    二进制运算符'=='不能应用于类型为'String!'的操作数 和Swift 2 Xcode 7中的'[String]'

  24. 24

    运算符'=='不能应用于类型为'int?'的操作数 和where子句上的“字符串”

  25. 25

    二元运算符“..<”不能应用于“Int”和“Int?”类型的操作数

  26. 26

    二元运算符“==”不能应用于“(Any) -> Int”和“Int”类型的操作数

  27. 27

    二元运算符“/”不能应用于“UIColor”和“Int”类型的操作数

  28. 28

    函数错误:“二元运算符‘+’不能应用于‘Double’和‘Int’类型的操作数”

  29. 29

    错误:二元运算符“-=”不能应用于“Int?”类型的操作数 和'国际'

热门标签

归档