swift4.1 系统学习二

//
//  main.swift
//  swift02
//
//  Created by iOS on 2018/9/21.
//  Copyright © 2018年 weiman. All rights reserved.
//

import Foundation

/*
 swift学习笔记3
 */

/*
 1. 整数字面量
 
 表示方式: 二进制(0b)、八进制(0o)、十进制、十六进制(0x)
 */
let dec = 100
let bin = 0b0110_0100
let oct = 0o144
let hex = 0x64

//思考:还记得进制之间的转换吗?
/*
 十进制转二进制:除以二取余数
 二进制转八进制:从右到左,依次取三位,最后一组不够三位用0补足,每一组的每个位置加起来,然后组合在一起,就是八进制了
 二进制转十六进制:与八进制类似,不过是依次取四位
 */

/*
 2. 整数类型(Int)
 
 */

//打印本机Int类型的表示范围
let max = Int.max
print("max: \(max)")
//max: 9223372036854775807

let min = Int.min
print("min: \(min)")

let a: Int8 = 127
let b: UInt8 = 255

// 注意:对于固定位宽的整数类型,赋值的时候要注意他们的表示范围,不要超出表示范围,不然会报错
// 报错:Integer literal '200' overflows when stored into 'Int8'
// let aa: Int8 = 200


// 3. 浮点数类型
do {
    let a: Float
    let b = 0.5
    let c: Double
    let pi = 3.141592653
    a = Float(b)
    c = pi
    print("\(a),\(b),\(c),\(pi)")
    
}

/* 注意:swift中没有隐式转换,不同类型之间一定要显示转换。这是为什么呢?因为通过查看swift的API发现,swift的Int,Float,Double都是Struct类型的独立类型,既然是独立类型,互相赋值的时候当然需要类型转换了。之所以能够顺利的进行转换,是因为在Float结构体中定义了下面这个方法:
 ///     let x: Double = 21.25
 ///     let y = Float(x)
 ///     // y == 21.25
 ///
 ///     let z = Float(Double.nan)
 ///     // z.isNaN == true
 ///
 /// - Parameter other: The value to use for the new instance.
 public init(_ other: Double)
 
 Float(b) 相当于 Float.init(b),init是可以省略的
*/

// 4. 布尔类型
/*
 注意: swift的bool类型与C、OC以及C++不同,不再是非零为真,零为假,而是回归独立的类型,
       只有true和flase两个类型,与整数完全分离。
 */

do {
    let a = true
    let b = false
    
    //逻辑计算
    print("a&&b: \(a&&b)")
    //a&&b: false
    
    print("a||b: \(a||b)")
    
}

// 5. 各种数值类型之间的转换
/*
 注意:swift中各个数值类型都是struct类型的,是各自独立的类型,转换的时候需要使用构造方法进行显示转换。
 swift中个的每种数值类型以及布尔类型还提供了一个可供NSNumber类型作为输入参数的构造方法。该构造方法可以通过NSNumber对整数或浮点数进行封装,然后内部采用高位截断或符号位扩充的形势转换为目标数据类型。
 */
do {
    let n = 1000
    let c = Int8(truncating: NSNumber(value: n))
    print("----\(c)")
    
}

// 6. 计算操作符
// >, < , >=, <=, ==, !=

//7. 溢出计算操作
// swift中包含了允许计算时发生溢出的操作符,以允许开发者对整数做运算时发生结果溢出,而不引发异常。
// 可溢出加法:&+
// 可溢出减法:&-
// 可溢出乘法:&*
do {
    let a: Int8 = 120
    let b: Int8 = 100
    
    var c = a &+ b
    print(c)
    
    c = -100 &- a
    print(c)
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值