Swift5 vs C/C++ (未完待续)

对比一下两种语言的语法,以防止自己搞混。以便于自己记忆。

肯定是不全的,随时增删改查。

 

在线文档;   https://devdocs.io/

 

概念swift5C++
打印print( "Hello World")printf("Hello World");

关键字,

数据类型

var let

enum :  Optional

struct :  Bool、Int、Float、Double、Character,                     String、Array、Dictionary、Set

class : 

 

Void

 

Int8、Int16、Int32、Int64、UInt8、UInt16、UInt32、UInt64

 

asm auto bool break case
catch char class const const_cast
Continue default delete do double
dynamic_cast else enum explicit export
extern false float for friend
goto if inline int long
mutable namespace new operator private
protected public register reinterpret_cast return
short signed sizeof static static_cast
struct switch template this throw
true try typedef typeid typename
union unsigned using virtual void
volatile wchar_t while

变量

var value = 10     //整形  自动识别类型
print(value)

 

var value = "hello world"  //字符串
print(value)

 

var value = [1,3,5,7,9]  //数组
print(value)

 

var dic = ["length":1, "width":2,  "height":3] //字典
print(dic)

 

var stu = ("0001","man",90,"高一9班",170,120)
print(stu)    //元组

int value = 10;

float value = 10.0

 

//字符串

const char *st = "The expense of spirit\n";

 

int ia[10];   //数组

 

int ia[] = { 0, 1, 2 }; //数组

常量

let value = 10    
print(value)

 

let value: Float = 10.5     //指定类型
print(value)

// 缓冲区大小

const int bufSize = 512

if-elselet age = 30
if age > 100 {
    print("died")
}else if age > 60 {
    print("old")
}else if age >= 30 {
    print("married")
}else{
    print("happy")
}
    int age = 30;
    if (age > 100) {
        printf("died");
    }else if( age > 60) {
        printf("old");
    }else if( age >= 30 ){
        printf("married");
    }else{
        printf("happy");
    }
while

var num = 3
while num > 0 {
    num = num - 1
    print("hello")
}

 

//repeat-while

var num = 3
repeat{
    num = num - 1
    print("hello")
} while num > 0 

    int num = 3;
    while (num > 0) {
        num = num - 1;
        printf("hello");
    }

 

/do-while

    int num = 3;
    do{
        num = num - 1;
        printf("hello");
    } while( num > 0 );

for

//i 默认是let , 也可以声明为var

for i in 1...5{
    print(i)
}

 

for i in 1...5 where i != 3 {
    print(i)
}

 

let names = ["hello","world","look"]
for name in names[0...2] {
    print(name)
}

    for(int i = 1; i <=5; ++i){
        printf("%d",i);
    }
switch  
函数

func getPi() -> Double {
    return 3.14
}

func sum(v1 : Int,  v2:  Int) -> Int{
    return v1+v2
}

print(getPi())
print(sum(v1 : 3,  v2:  5))

double getPi()
{
    return 3.14;
}

int sum( int v1,  int v2) 
{
    return v1+v2;
}

printf("%.6f",getPi());
printf("%d",sum(3, 5));

输入输出参数

func swapValues(_ v1: inout Int,  _ v2: inout Int) {
    (v1,v2) = (v2,v1)
}

var v1 = 3
var v2 = 4
swapValues(&v1,&v2)
print("v1: \(v1)  v2: \(v2)")

通过 指针 或者 引用
枚举enum Direction : Int{
    case north
    case south
    case east
    case west
}
print(Direction.north)
print(Direction.north.rawValue)

enum Direction{
     north,
     south,
     east,
     west
};

 

    printf("%d",north);
    printf("%d",south);

获取占用的字节大小

// 8, 分配占用的空间大小

print(MemoryLayout<Int>.stride)

 

// 8, 实际用到的空间大小
print(MemoryLayout<Int>.size)

 

// 8, 对齐参数
print(MemoryLayout<Int>.alignment)

 

 

var ret = "helloworld"
print(MemoryLayout.stride(ofValue: ret))
 

//4

printf("%d",sizeof(int));

 

 

可选项  
struct

struct Date{
    var year:Int 
    var month:Int
    var day:Int
}

var date = Date(year:2019, month:11, day:21)
print(date)

 

//

struct Date{
    var year:Int
    var month:Int
    var day:Int
    
    init(year: Int, month: Int, day: Int){
        self.year = year 
        self.month = month
        self.day =  day
    }
}

var date = Date(year:2017, month:11, day:21)
print(date)

 

 
class

class Size{
    var width = 10
    var height = 20
    func showSize(){
        print("width = \(width),height=\(height)")
    }
}

var size = Size()
size.showSize()

 
闭包表达式  

存储属性

计算属性

struct Rect{
    var width: Int          //存储属性
    
    var area: Int {         //计算属性
        set{
            width = newValue/2
        }
        get{
            width*width
        }
    
    }

}

var rect = Rect(width:5)
print(rect.width)    //5
print(rect.area)     //25

rect.area = 20
print(rect.width)    //10

 
类型属性

struct Car{
    static var count: Int = 0

    init(){
        Car.count = Car.count + 1
    }
}

var car1 = Car()
var car2 = Car()
var car3 = Car()

print(Car.count)

 
继承

//值类型(枚举、结构体)不支持继承,只有类支持继承

class Animal {
    var age = 1
}
class Dog : Animal {
    var weight = 2
}
class ErHa : Dog {
    var iq = 3
}

var erha = ErHa()
print(erha.age)
print(erha.weight)
print(erha.iq)

 
重写实例方法

class Animal{
    func call(){
        print("---animal call---")
    }
}

class Cat : Animal{
    override func call(){
        super.call()
        print("---Cat call---")
    }
}

var animal = Animal()
animal.call()

animal = Cat()
animal.call()

 
协议(Protocol)  

Any

is

protocol Runnable { func run() }

class Person{}

class Student : Person, Runnable {

    func run(){
        print("student run")
    }
    
    func study(){
        print("student study")
    }
}

var stu : Any = 10
print(stu is Int)      //true
stu = "jack"
print(stu is String)     //true
stu = Student()
print(stu is Person)     //true
print(stu is Student)     //true
print(stu is Runnable)     //true


 

 
局部作用域

do{

    //....

}

 
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   

 

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值