 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)

range.contains(-1)


//// 逻辑运算 操作对象是逻辑布尔值。
//// 逻辑非 !a 逻辑与 a && b 逻辑或 a || b












}

// 空合运算符
/*
 空合运算符（a ?? b）将对可选类型a进行空判断，如果a包含一个值就进行解析，否则就返回一个默认值b.
 这个运算符有两个条件：
 1. 表达式a必须是Optional类型。
 2. 默认值b的类型必须要和a存储值得类型保持一致。
 等价于 a != nil ? a! : b
 短路：若a非空，b不会被估值
 */

let defaultColorName = "red"
var userDefineColorName: String?
