【阿发C/C++】6.表达式与运算符
本帖最后由 冰封水3 于 2019-3-26 14:41 编辑6.1 算术表达式
由算术运算符连接起来的表达式,称为算术表达式。
算术运算符有5个:+(相加)、-(相减)、*(相乘)、/(相除)、%(取模)。
其中+、-、*和普通的算术概念一致,对于整型和浮点型都适用。
对于整数来说,相除是取“倍数”,取模(%)是取“余数”。
对于浮点数来说,相除后仍是浮点数(保留小数部分),浮点数不能进行取模运算。
算术运算符组合在一起时,优先顺序为:“*、/、%”优先于“+、-”,也可以用括号小指定结合顺序。
无论何种场景,使用小括号来指定结合顺序,会增加代码的可读性。
6.2 赋值表达式
#理解赋值运算
赋值运算在具体操作时,分为两步:
<1>.计算出等号右侧表达式的值;
<2>.将值写入到左侧变量对应的内存中。
#赋值与算术运算合并
+=,说明:a+=b相当于a=a+b
-=,说明:a-=b相当于a=a-b
*=,说明:a*=b相当于a=a*b
/=,说明:a/=b相当于a=a/b
%=,说明:a%=b相当于a=a%b
# 多个赋值可以串连在一行内:
a=b=c=10;
相当于
(a=(b=(c=10)));
6.3 关系表达式
关系表达式是用于表示两个数大小关系的式子。
<,小于
<=,小于或等于
>,大于
>=,大于或等于
==,等于
!=,不等于
关系表达式的值有两种:1(真)或0(假)。
C语言中,以非零表示真,以零表示假。
6.4 条件表达式
条件表达式,也称问号表达式,是由条件运算符构造成的、带判断条件的表达式。
其一般形式为:
expr1?expr2:expr3
说明:
<1>.当expr1为真时,表达式的值为expr2;
<2>.当expr1为假时,表达式的值为expr3。
expr是expression的缩写,意思是“表达式”。
6.5 逻辑表达式
逻辑运算符包括:!(逻辑非)、&&(逻辑与)、||(逻辑或)。
逻辑非的语法形式为:
! expr
即在表达式之前加一个感叹号,表示对该表达式取非。
逻辑与,表示“并且”的意思,其形式为:
expr1 && expr2
判断规则:真同异假。
逻辑或,表示“或者”的意思,其形式为:
expr1 || expr2
判断规则:两点表达式中,只要其中一个为真,则整个表达式为真。
6.6 逗号表达式
逗号表达式是以逗号隔开的一系列表达式,其形式为:
expr1,expr2,expr3,……,exprN
运算规则:从左到右依次计算每个子式的值,并把最后一个子式的值作为整个表达式的值。
6.7 自增/自减运算符
++是自增运算符,表示对变量加1;
--是自减运算符,表示对变量减1。
自增、自减运算符只能用于整型变量,不能用于浮点型变量。
前置时,先执行自增或自减运算,再执行所在行的表达式。
例:
int a = 10;
printf("%d",++a);
相当于
int a = 10;
a += 1;
printf("%d",a);
后置时,先计算本行的表达式,再执行自增或自减运算。
例:
int a = 10;
printf("%d",a++);
相当于
int a = 10;
printf("%d",a);
a += 1;
6.9 类型的转换与提升
每一种数据类型都有其表示范围,从高范围到低范围转换会发生数据损失或截断,而从低范围到高范围不会发生数据损失。
下面是对几种常见数据类型表示范围的比较:
char<short<int<double
float<double
在算术表达式中,当不同的类型混合运算时,编辑器会根据级别最高的类型先进行提升,把所有的运算数都提升到最高级别,再进行运算,这样做的目的是避免数据丢失。
页:
[1]