博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Swift Compiler Error Binary oprator '+' cannot be applied to operands of type 'UInt16' and 'UInt8'
阅读量:4120 次
发布时间:2019-05-25

本文共 958 字,大约阅读时间需要 3 分钟。

1. Swift报错:   Swift Compiler Error Binary oprator '+' cannot be applied to operands of type 'UInt16' and 'UInt8'

错误写法:

       let a:UInt16 = 1_000

       let b: UInt8 =1

       let sum = a + b

       println("sum = \(sum)")

错误原因: 不同类型的变量和常量可以存储不同范围的数字.如果数字超出了可存储的范围,编译的时候会报错.所以你必须根据不同情况选择性使用数值类型转换.

正确写法: 

       let a:UInt16 = 1_000

       let b: UInt8 =1

       let sum = a + UInt16(b)

       println("sum = \(sum)")

2. Swift报错:   Swift Compiler Error Binary oprator '+' cannot be applied to operands of type 'Int' and 'Double'

错误写法:

        let a = 123

        let b = 0.456

        let sum = a + b

        println("sum = \(sum)")

错误原因: 加好两边的数的类型必须相同,不能直接相加.所以int和double类型不能直接相加.

正确写法: 

        let a = 123

        let b = 0.456

        let sum = Double(a) + b

        println("sum = \(sum)")

注意:  
区别    
let
sum =
123
+
0.456 相这样写是正确的,因为数字字面量123本身没有类型,它们会在编译器需要求值的时候被推断.
以上的 Double(a) UInt16(b) 这样的someType(ofInitialValue)是调用Swift构造器并传入一个初始化的默认方法.在语言内部,UInt16有一个构造器,可以接收一个UInt8类型的值,所以这个构造器可以用现有的UInt8来创建一个新的UInt16.注意你并不能传入任意的值,只能传入UInt16内部有对应构造器的值.不过你可以扩展现有的类型来让它可以接收其他类型的值(包括自定义的类型)

转载地址:http://epnpi.baihongyu.com/

你可能感兴趣的文章
XML生成(一):DOM生成XML
查看>>
XML生成(三):JDOM生成
查看>>
Ubuntu Could not open lock file /var/lib/dpkg/lock - open (13:Permission denied)
查看>>
collect2: ld returned 1 exit status
查看>>
C#入门
查看>>
查找最大值最小值
查看>>
C#中ColorDialog需点两次确定才会退出的问题
查看>>
数据库
查看>>
nginx反代 499 502 bad gateway 和timeout
查看>>
linux虚拟机安装tar.gz版jdk步骤详解
查看>>
python猜拳游戏
查看>>
python实现100以内自然数之和,偶数之和
查看>>
python数字逆序输出及多个print输出在同一行
查看>>
ESP8266 WIFI数传 Pixhaw折腾笔记
查看>>
苏宁产品经理面经
查看>>
百度产品经理群面
查看>>
去哪儿一面+平安科技二面+hr面+贝贝一面+二面产品面经
查看>>
element ui 弹窗在IE11中关闭时闪现问题修复
查看>>
vue 遍历对象并动态绑定在下拉列表中
查看>>
Vue动态生成el-checkbox点击无法选中的解决方法
查看>>