swift-基础04-数字类型转换

来源:互联网 发布:java软件工程师查工资 编辑:程序博客网 时间:2024/05/16 07:07

    在代码中,我们对所有通用的整数常量和变量使用 Int类型,即使他们知道非负。

    使用 Int类型意味着整数常量和变量将易于复用,易于匹配整数面值的类型推测。

    

    只有当必要的时候,才使用其他整数类型,

    比如处理外部长度明确的数据,或者为了优化性能、内存占用等,或其他必要的优化。

    使用显示长度的类型有助于发现值溢出和暗示正在使用的数据的性质。

   

    不同整数类型的常量或变量存储的范围是不同的。

    Int8 的范围是-128127,而 UInt8的范围是 0 255

    swift提供了溢出检查

    如果数字不在整数类型的范围内,编译器将报告一个错误:

 

    let cannotBeNegative :UInt8 = -1

    let tooBig:Int8 =Int8.max + 1

    var suibian = cannotBeNegative

    var suibian1 = tooBig

    suibian++

    suibian1++

    

    因为每个整数类型可以存储不同范围的值,所以,你必须根据不同的情况选择数值类型的转换。

    这样可以防止隐式转换的错误,也可以表明类型转换的意图。

    

    let twoThousand: UInt16 = 2_000

    let one: UInt8 =1

    let twoThousandAndOne = twoThousand + UInt16(one)

    print(twoThousandAndOne)


    将一个特定的数字类型转换成另一个,要用这个数字来初始化成一个需要类型的新数字。

    在上面的示例中,常量 twoThousand UInt16 类型,然而常量 one UInt8 类型。 

    它们不能直接加在一起,因为他们不是同一类型。

    所以,这个例子中调用 UInt16(one)来创建新的 one 的值,并使用这个新值来计算:

    因为这2个数现在都是 UInt16类型,所以可以相加。

    输出常数(twoThousandAndOne)也被推断为UInt16类型,因为它是两个UInt16类型值的总和。

    SomeType(ofInitialValue) Swift 调用构造器并传入初始值的默认方法。

    在语言中,UInt16有一个构造器,可以接受一个 UInt8  类型的值,

    可以用 UInt8来创建一个新的UInt16

    你并不能传入任意类型的值,只能传入UInt16构造器需要的类型的值。

    

    整数和浮点数之间的转换必须显示的指定类型

    通过常量 three的值创建一个新类型 Double的值,

    所以,加号两边是相同的类型。如果不转换,是不允许相加的。编译器会报错误


    

    let three = 3

    let xiaoshu = 1.1415

    let pi = Double(three) + xiaoshu

    print(pi)

    

    let intpi = three + Int(xiaoshu)

    print(intpi)

    

    结合数字常量和变量的规则不同于字面量的规则。

    字面量3可以直接和字面量1.1415相加,因为数字字面量本身没有明确的类型。

    在编译器求值的时候会推测类型


0 0
原创粉丝点击