第6章 表达式
表达式:运算符+操作数+括号,运算后得到一个结果值。
6.1 算术表达式
算术运算符:+ - * / % ++ --
- 整数除法:两个int相除直接截断小数
5/3 →1; - 浮点除法:至少一个浮点数
5.0/3 →1.666... - 取余%:只能整数操作数;结果符号和被除数相同。
-5%3=-2; - 自增自减
- 前缀
++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 运算符优先级(从高到低)
- 括号
() ++ -- !* / %+ -- 关系
> < >= <= == !=&&||- 三目
?: - 赋值
= += -= - 逗号
,
结合性:
- 绝大多数左结合;
- 赋值、三目运算符是右结合。