Skip to main content

第6章 表达式

表达式:运算符+操作数+括号,运算后得到一个结果值。

6.1 算术表达式

算术运算符:+ - * / % ++ --

  1. 整数除法:两个int相除直接截断小数 5/3 →1
  2. 浮点除法:至少一个浮点数 5.0/3 →1.666...
  3. 取余%只能整数操作数;结果符号和被除数相同。-5%3=-2
  4. 自增自减
    • 前缀 ++a:先自增,再参与表达式运算;
    • 后缀 a++:先拿原值参与运算,再自增。

6.2 赋值表达式

  • 基础赋值 =a=5+3;表达式结果等于赋值后变量的值。
  • 复合赋值:+= -= *= /= %=

6.3 关系表达式(比较)

> < >= <= == !=

⚠ 判断相等是双等于==,单等于=是赋值! C语言:0代表假,非0代表真;C++:true / false

6.4 逻辑表达式

&&逻辑与(全真才真);||逻辑或(一真即真);!逻辑非取反。

短路求值

  • A && B:A为假,B不会执行
  • A || B:A为真,B不会执行

6.5 条件表达式(三目运算符 ?:

格式:条件 ? 表达式2 : 表达式3 条件为真执行表达式2;假执行表达式3。

int max = (a>b) ? a : b;

6.6 逗号表达式

格式:e1,e2,e3;从左向右依次执行,整个表达式的值等于最后一项

int a=1,b=2,c;
c=(a++,b++,a+b);

6.7 运算符优先级(从高到低)

  1. 括号()
  2. ++ -- !
  3. * / %
  4. + -
  5. 关系> < >= <=
  6. == !=
  7. &&
  8. ||
  9. 三目?:
  10. 赋值= += -=
  11. 逗号,

结合性:

  • 绝大多数左结合;
  • 赋值、三目运算符是右结合