 var str = "Hello, playground"
 
 // 术语
-// 运算符有一元、二元、三元运算符。受运算符影响的值叫做操作数。
+/*
+ 运算符有一元、二元、三元运算符。受运算符影响的值叫做操作数。
+ */
 
 // 赋值运算符
-// （a = b）用b的值来初始化或更新a的值
+/*
+ a = b）用b的值来初始化或更新a的值
+ */
 let b = 10
 var a = 5
 a = b
 
-// 如果赋值的右边是一个多元组，它的元素可以马上被分解成多个常量或变量
+/*
+ 如果赋值的右边是一个多元组，它的元素可以马上被分解成多个常量或变量
+ */
 let (x, y) = (1, 2)
-// swift的赋值操作并不返回任何值。
-//if a = b { // 错误
+
+/*
+ swift的赋值操作并不返回任何值。
+ */
+//if a = b { // 错误，避免把 == 写错成 = 这类错误的出现
 //    
 //}
 
 // 算符运算符
-// 四则算术运算：+，-，*，/
-// swift默认情况下不允许在数值运算中出现溢出情况。可以使用Swift的溢出运算符来实现溢出运算（a &+ b）
-// 加法运算符也可用于String的拼接
+// 四则算术运算
+/*
+ 加法 +
+ 减法 -
+ 乘法 *
+ 除法 /
+ */
+print(1 + 2)
+print(5 - 3)
+print(2 * 3)
+print(10.0 / 2.5)
+/*
+ swift默认情况下不允许在数值运算中出现溢出情况。可以使用Swift的溢出运算符来实现溢出运算（a &+ b）
+ */
+print(UInt8.max &+ 1)
+
+/*
+加法运算符也可用于String的拼接
+*/
+print("hello," + "world")
 
 // 求余运算符（取模运算）%
-// 在对负数b求余时，b的符号会被忽略。这意味着a%b和a%-b的解惑是相同的。
+/*
+ 在对负数b求余时，b的符号会被忽略。这意味着a%b和a%-b的解惑是相同的。
+ */
 print(9 % -4)
 print(9 % 4)
 print(-9 % 4)

    print(name2)
}

/* 半开区间操作符也有单侧表达形式，附带上它的最终值.
   就像你使用区间去包含一个值，最终值并不会落在区间内*/
for name3 in names[..<2] {
    print(name3)
}



// 比较运算符 ==  !=  >  <  >=  <=
/*
 恒等===和不恒等！==来判断两个对象是否引用同一个对象实例
 */
print(1 == 1)
print(2 != 1)
print(2 > 1)
print(1 < 2)
print(1 >= 1)
print(2 <= 1)

let name = "world"
if name == "world" {
    print("hello, world")
} else {
    print("I'm sorry \(name), but I don't recognize you")
}

/*
 如果两个元组的元素相同，且长度相同，元组就可以被比较。比较元组大小按照从左到右、逐值比较的方式，直到发现两个值不等时停止。
 如果所有值都相等，那么这一对元组我们就称它们是相等的.
 Swift 标准库只能比较七个以内元素的元组比较函数。如果你的元组元素超过七个时，你需要自己实现比较运算符。
 */
print((1, "zebra") < (2, "apple"))
print((3, "apple") < (3, "bird"))
print((4, "dog") == (4, "dog"))

// 三元运算符
/*
 问题？答案1：答案2.
 等价于
 if 问题 {
     答案1
 } else {
     答案2
 }
 */
let contentHeight = 40
let hasHeader = true

