operator
5.2.1 复制运算符: =
bmw = 2002;
i = i + 1;
几个术语: 数据对象, 左值, 右值和运算符
- 数据对象 (data object): 用于存储值的数据存储区域
- 左值 (lvalue): 用于标识特定数据对象的名称或表达式
- 可修改的左值 (modifiable lvalue)
- 对象定位值 (object locator value)
- 右值 (rvalue): 指的是能赋值给可修改左值的量, 且本身不是左值
运算对象 (operand).
多重赋值:
5.2.2 加法运算符: +
addition operator
printf("%d", 4 + 20);
5.2.3 减法运算符: -
subtraction operator
takehome = 224.00 - 24.00;
+和-被称为二元运算符 (binary operator).
5.2.4 符号运算符: -和+
rocky = -12;
smokey = -rocky;
一元运算符 (unary operator)
C90 新增+运算符:
dozen = +12;
5.2.5 乘法运算符: *
cm = 2.54 * inch;
1. 指数增长
5.2.6 除法运算符: /
four = 12.0/3.0;
分为:
- 整数除法
- 浮点数除法
截断 (truncation):
- 不会四舍五入
注意混用除法:
7./4
对于负数整数除法, C99 使用 “趋零截断”:
- -3.8 -> -3
5.2.7 运算符优先级
butter = 25.0 + 60.0 * n /SCALE;
表达式树 (expression tree):
5.2.8 优先级和求值顺序
- 微观上不能假设先计算
6*12
再计算5*20
y = 6 * 12 + 5 * 20;