operator

5.2.1 复制运算符: =

  1. bmw = 2002;
  1. i = i + 1;

image.png

几个术语: 数据对象, 左值, 右值和运算符

  • 数据对象 (data object): 用于存储值的数据存储区域
  • 左值 (lvalue): 用于标识特定数据对象的名称或表达式
  • 可修改的左值 (modifiable lvalue)
  • 对象定位值 (object locator value)
  • 右值 (rvalue): 指的是能赋值给可修改左值的量, 且本身不是左值

运算对象 (operand).

多重赋值:

image.png

5.2.2 加法运算符: +

addition operator

  1. printf("%d", 4 + 20);

5.2.3 减法运算符: -

subtraction operator

  1. takehome = 224.00 - 24.00;

+和-被称为二元运算符 (binary operator).

5.2.4 符号运算符: -和+

  1. rocky = -12;
  2. smokey = -rocky;

一元运算符 (unary operator)

C90 新增+运算符:

  1. dozen = +12;

image.png

5.2.5 乘法运算符: *

  1. cm = 2.54 * inch;

image.png

1. 指数增长

image.png

5.2.6 除法运算符: /

  1. four = 12.0/3.0;

分为:

  • 整数除法
  • 浮点数除法

截断 (truncation):

  • 不会四舍五入

image.png

注意混用除法: 7./4

对于负数整数除法, C99 使用 “趋零截断”:

  • -3.8 -> -3

5.2.7 运算符优先级

  1. butter = 25.0 + 60.0 * n /SCALE;

表达式树 (expression tree):

image.png

image.png

5.2.8 优先级和求值顺序

  • 微观上不能假设先计算 6*12 再计算 5*20
  1. y = 6 * 12 + 5 * 20;

学以致用

image.png