CAPL 编程系列教程 - 第八期:运算符 (第一部分) - 算术与赋值

CAPL 编程系列教程的第八期内容,主要讲解 CAPL 中的运算符 (Operators) 的第一部分,重点是算术运算符赋值运算符

CAPL 编程系列教程 - 第八期:运算符 (第一部分) - 算术与赋值

一、 课程回顾与本期目标

  • 回顾: 前面学习了 CAPL 的数据类型(简单和复合)。
  • 本期目标: 开始学习 CAPL 中的运算符,本期重点讲解算术运算符和赋值运算符
  • 与 C 语言的关系:
    • CAPL 的运算符基本继承自 C 语言,非常相似
    • 如果有 C 语言基础,本期内容大部分可以快速浏览或跳过
    • 主要区别: CAPL 没有指针类型,因此没有指针相关的运算符(如 * 用于解引用,& 用于取地址)
  • 运算符优先级:
    • 与 C 语言一致,遵循标准的运算优先级(如乘除优先于加减)
    • 可以使用小括号 () 来改变运算顺序,提高优先级

二、 算术运算符 (Arithmetic Operators)

  • 运算符:
    • + (加法)
    • - (减法)
    • * (乘法)
    • / (除法)
    • % (取余/模运算)
  • 基本运算: 加减乘的用法与数学运算一致
    • 示例: (a + 13) * (29 - 26)
  • 除法 / 的规则:
    • 整数除法: 两个整数相除,结果一定是整数
    • 截断: 如果整数除法除不尽,结果会直接截断小数部分,不会进行四舍五入
      • 示例: 10 / 3 结果是 310 / 4 结果是 2
    • 浮点数参与的除法: 如果除法运算中至少有一个操作数是浮点数,则结果一定是浮点数
      • 示例: 12.5 / 4 结果是 3.12510.0 / 4 结果是 2.510 / 4.0 结果是 2.5
    • 类型转换: 如果想让两个整数相除得到浮点数结果,需要将其中一个整数强制类型转换为浮点数
      • 语法: (float)integer_var / another_integer
      • 示例: (float)a / 4 (其中 a 是整数 10),先将 a 转为 10.0,再除以 4,得到 2.5
    • 占位符: 输出运算结果时,必须使用与实际结果类型匹配的占位符 (%d 对应整数,%f 对应浮点数)。用错占位符会导致输出错误(如将浮点结果用 %d 输出可能得到 0)
  • 取余 % 的规则:
    • 只能用于整数: 取余运算符 % 两边的操作数必须都是整数类型,不能用于浮点数
    • 示例: a % 7 (其中 a 是整数 10),结果是 3
    • 错误示例: a % 7.5 会导致编译错误
  • 混合类型运算规则总结:
    • 整数与整数运算 -> 结果是整数
    • 浮点数与浮点数运算 -> 结果是浮点数
    • 浮点数与整数运算 -> 整数会被隐式转换为浮点数,结果是浮点数

三、 赋值运算符 (Assignment Operators)

  • 基本赋值 =:
    • 将等号右侧表达式的值计算出来,赋给等号左侧的变量
    • 示例: a = 10;, b = 12.5;
  • 复合赋值运算符: 将算术运算和赋值合并。
    • += (加等于): a += 5; 等价于 a = a + 5;
    • -= (减等于): a -= 3; 等价于 a = a - 3;
    • *= (乘等于): a *= 2; 等价于 a = a * 2;
    • /= (除等于): a /= 3; 等价于 a = a / 3;
    • %= (取余等于): a %= 5; 等价于 a = a % 5;
    • 注意: 两个符号之间不能有空格
  • 自增 ++ 和自减 --: 用于将变量的值加 1 或减 1。
    • 后置 (Post-increment/decrement): a++, a--
      • 变量使用其原始值参与当前表达式的运算,然后变量的值再自增或自减 1
      • 示例: a = 10; write("Value: %d", a++); 会输出 Value: 10,之后 a 变为 11
    • 前置 (Pre-increment/decrement): ++a, --a
      • 变量自增或自减 1,然后再使用其新值参与当前表达式的运算
      • 示例: a = 11; write("Value: %d", ++a); 会输出 Value: 12,之后 a 也是 12
    • 单独使用: 如果 ++-- 单独作为一条语句(如 a++;++a;),前置和后置的效果是相同的,都是将 a 的值加 1

四、 总结与后续

  • 本期详细讲解了 CAPL 的算术运算符和赋值运算符,包括它们的用法、规则以及与 C 语言的异同,特别强调了整数除法、混合类型运算和自增自减的细节
  • 下一期将继续讲解 CAPL 的其他运算符,如关系运算符、逻辑运算符和位运算符