3.1 算术运算符

  • 核心概念: 算术运算符用于执行基本的数学运算,包括加法、减法、乘法、除法和取模等。

  • 运算符列表:

    • + (加法):将两个操作数相加。
    • - (减法):将第二个操作数从第一个操作数中减去。
    • * (乘法):将两个操作数相乘。
    • / (除法):将第一个操作数除以第二个操作数。
    • % (取模):返回第一个操作数除以第二个操作数的余数。
    • ++ (自增):将操作数的值增加 1。
    • -- (自减):将操作数的值减少 1。
  • 操作数类型: 算术运算符通常用于 intfloat 类型的操作数。

  • 返回值类型:

    • 如果操作数都是 int 类型,则结果为 int 类型。
    • 如果操作数中至少有一个 float 类型,则结果为 float 类型。
  • 示例代码:

    int a = 10;
    int b = 3;
    float c = 3.5;
    
    print(a + b);   // 输出 13
    print(a - b);   // 输出 7
    print(a * b);   // 输出 30
    print(a / b);   // 输出 3
    print(a / c);   // 输出 2.857142857142857
    print(a % b);   // 输出 1
    
    a++;
    print(a);       // 输出 11
    
    b--;
    print(b);       // 输出 2
    

3.2 比较运算符

  • 核心概念: 比较运算符用于比较两个值的大小或相等性,返回布尔值。

  • 运算符列表:

    • == (等于):检查两个操作数是否相等。
    • != (不等于):检查两个操作数是否不相等。
    • > (大于):检查第一个操作数是否大于第二个操作数。
    • < (小于):检查第一个操作数是否小于第二个操作数。
    • >= (大于等于):检查第一个操作数是否大于或等于第二个操作数。
    • <= (小于等于):检查第一个操作数是否小于或等于第二个操作数。
  • 操作数类型: 比较运算符可以用于各种类型的操作数,包括 intfloatstringbool

  • 返回值类型: bool

  • 示例代码:

    int a = 10;
    int b = 20;
    string str1 = "hello";
    string str2 = "world";
    
    print(a == b);      // 输出 false
    print(a != b);      // 输出 true
    print(a > b);       // 输出 false
    print(a < b);       // 输出 true
    print(a >= 10);     // 输出 true
    print(a <= 5);      // 输出 false
    
    print(str1 == "hello"); // 输出 true
    print(str1 != str2);    // 输出 true
    

3.3 逻辑运算符

  • 核心概念: 逻辑运算符用于组合或取反布尔表达式,返回布尔值。

  • 运算符列表:

    • && (逻辑与):只有当两个操作数都为 true 时,结果才为 true
    • || (逻辑或):只要两个操作数中有一个为 true,结果就为 true
    • ! (逻辑非):对操作数取反。
  • 操作数类型: bool

  • 返回值类型: bool

  • 示例代码:

    bool a = true;
    bool b = false;
    
    print(a && b);  // 输出 false
    print(a || b);  // 输出 true
    print(!a);      // 输出 false
    print(!(a && b)); // 输出 true
    

3.4 位运算符

  • 核心概念: 位运算符用于对整数的二进制位进行操作,返回整数。

  • 运算符列表:

    • & (按位与):对两个操作数的二进制位进行按位与操作。
    • | (按位或):对两个操作数的二进制位进行按位或操作。
    • ^ (按位异或):对两个操作数的二进制位进行按位异或操作。
    • ~ (按位取反):对操作数的二进制位进行按位取反操作。
    • << (左移):将操作数的二进制位向左移动指定的位数。
    • >> (右移):将操作数的二进制位向右移动指定的位数。
  • 操作数类型: int

  • 返回值类型: int

  • 示例代码:

    int a = 5;  // 二进制 0101
    int b = 3;  // 二进制 0011
    
    print(a & b);  // 输出 1 (二进制 0001)
    print(a | b);  // 输出 7 (二进制 0111)
    print(a ^ b);  // 输出 6 (二进制 0110)
    print(~a);      // 输出 -6 (二进制 11111010)
    print(a << 1); // 输出 10 (二进制 1010)
    print(a >> 1); // 输出 2 (二进制 0010)
    

3.5 赋值运算符

  • 核心概念: 赋值运算符用于给变量赋值,包括简单赋值和复合赋值。

  • 运算符列表:

    • = (赋值):将右侧操作数的值赋给左侧变量。
    • += (加法赋值):将右侧操作数的值加到左侧变量上。
    • -= (减法赋值):将右侧操作数的值从左侧变量中减去。
    • *= (乘法赋值):将左侧变量乘以右侧操作数的值。
    • /= (除法赋值):将左侧变量除以右侧操作数的值。
    • %= (取模赋值):将左侧变量除以右侧操作数的值的余数赋给左侧变量。
  • 操作数类型: 左侧操作数为变量,右侧操作数类型与变量类型兼容。

  • 返回值类型: 赋值后左侧变量的类型。

  • 示例代码:

    int a = 10;
    a += 5;     // 等价于 a = a + 5
    print(a);   // 输出 15
    
    a -= 3;     // 等价于 a = a - 3
    print(a);   // 输出 12
    
    a *= 2;     // 等价于 a = a * 2
    print(a);   // 输出 24
    
    a /= 4;     // 等价于 a = a / 4
    print(a);   // 输出 6
    
    a %= 5;     // 等价于 a = a % 5
    print(a);   // 输出 1
    

3.6 字符串连接运算符

  • 核心概念: 字符串连接运算符用于将两个字符串连接成一个新的字符串。

  • 运算符: ..

  • 操作数类型: string

  • 返回值类型: string

  • 示例代码:

    string firstName = "Alice";
    string lastName = "Bob";
    string fullName = firstName .. " " .. lastName;
    print(fullName); // 输出 Alice Bob
    

3.7 三元运算符

  • 核心概念: 三元运算符用于根据条件选择两个表达式之一,返回选中的表达式的值。
  • 语法: 条件 ? 表达式1 : 表达式2
  • 操作数类型: 条件为布尔值,表达式