1.3 运算符和表达式
C++中记述运算的符号称为运算符,运算符的运算对象称为操作数。
对一个操作数运算的运算符称为单目运算符或称为一元运算符。
对两个操作数运算的运算符称为双目运算符或称为二元运算符。
对三个操作数运算的运算符称为三目运算符或称为三元运算符。
算术运算符
函数原型 | 功能说明 |
---|---|
+ | 正号运算符 |
- | 负号运算符 |
* | 乘法运算符 |
/ | 除号运算符 |
% | 求余运算符 |
+ | 加法运算符 |
- | 减法运算符 |
int abs(int n); | 返回整数n的绝对值 |
long labs(long n); | 返回长整数n的绝对值 |
double fabs(double x); | 返回双精度x的绝对值 |
double cos(double x); | 返回x弧度的余弦 |
double sin(double x); | 返回x的正弦 |
double tan(double x); | 返回x的正切 |
double acos(double x); | 返回x的反余弦弧度 |
double asin(double x); | 返回x的反正弦弧度 |
double atan(double x); | 返回x的反正切弧度 |
double log(double x); | 返回以e为底的对数 |
double log10(double x); | 返回以10为底的对数 |
double exp(double x); | 求e^x |
double pow(double x,double y); | 求x^y |
double sqrt(double x); | 求x的平方根 |
double fmod(double x,double y); | 求整除x/y的余数 |
double ceil(double x); | 求不小于x的最小整数 |
double floor(double x); | 求不大于x的最大整数 |
* 除法运算:两个整数相除,结果是整数,将小数部分去掉;若被除数或除数中有一个或一个以上,则进行实数除法,结果是实型。
* 求余运算:要求参与运算的两个操作数都是整型,结果是两个数相除的余数
* 结合性:在算术运算符中,除了单目运算符外,其余运算符的结合性都是从左到右
* 溢出处理:在整数超过类型范围溢出的时候,系统不认为是一个错误。其余的编译系统会报告错误病终止程序运行
赋值运算符
- 结合性从右到左
复合赋值
- 在C++中,规定了10种复合赋值运算符
运算符 | 功能 | 运算符 | 功能 |
---|---|---|---|
+= | 加赋值 | &= | 位与赋值 |
-= | 减赋值 | |= | 或与赋值 |
*= | 乘赋值 | ^= | 位异或 |
/= | 除赋值 | <<= | 左移位 |
%= | 求余赋值 | >>= | 右移位 |
* 复合运算符可以简化代码,也可以在编译时产生更高效的执行代码
* 复合运算符之间不能有空格,否则编译时会出现错误信息
多重赋值
- 多重赋值是指在一个赋值表达式中出现两个或更多的赋值符“=”
数据类型转换
自动转换
- 自动转换是将数据类型按从高到低的顺序自动进行转换
强制转换
- 强制转换是在程序中通过指定数据类型改变上图的类型转换顺序,将一个变量从其定义的类型改变成为另一种不同的类型。可能会丢失有效的数据位
- 两种转换格式
(<类型名>)<表达式>
<类型名>(<表达式>)
如:
double f = 3.56;
int nNum;
nNum = (int)f;
// 或者 nNum = int(f);
关系运算符
- 关系运算:实际上是比较两个操作数是否符合给定的条件。在C++中,若符合条件,则关系表达式的值为bool型的true或非0(“真”),否则为bool型的false或0(“假”)
- C++提供了六种关系与关系运算符
运算符 | 含义 |
---|---|
< | 小于 |
<= | 小于等于 |
> | 大于 |
>= | 大于等于 |
== | 等于 |
!= | 不等于 |
* 其中前四种的优先级相同且高于后面两种
逻辑运算符
- 当需要满足多个条件的时候,则需要使用逻辑运算符
- C++提供了三种逻辑运算符
运算符 | 含义 |
---|---|
! | 逻辑非 |
&& | 逻辑与 |
|| | 逻辑或 |
位运算符
- C++语言提供了两种位运算符
运算符 | 含义 |
---|---|
~ | 按位求反 |
& | 按位与 |
^ | 按位异或 |
| | 按位或 |
<< | 左移 |
>> | 右移 |
* 左移,低位补0,移出的高位舍弃
操作数 << 移位的位数
* 右移:移出的低位舍弃。如果是无符号,高位补0;有符号,高位补符号数
条件运算符
- 条件运算符
?:
是C++中唯一的一个三目运算符
<e1>?<e2> : <e3>
- 如果e1为真,执行e2,否则执行e3
- 条件运算符的优先级仅高于赋值运算符
sizeof运算符
sizeof
的目的是返回操作数所占的内存空间大小(字节数)
sizeof(<表达式>)
sizeof(<数据类型>)
逗号运算符
- 逗号运算符是优先级最低的运算符,它用于把多个表达式连接起来
`表达式1,表达式2,表达式3,…,表达式n` - 计算时,C++将从左往右逐个计算表达式,最终整个表达式的结果是最后计算的那个表达式的类型和值
自增自减
- 单目运算符的自增和自减为变量加1和减1提供了一种非常有效的方法
- ++和–可放在变量的左边和右边,称为前缀运算符和后缀运算符
- 前缀运算符:在将该变量增1(减1)后,用新的值在表达式中进行其他运算
- 后缀运算符:则用该变量的原值在表达式中进行其他运算后,再将该变量增1(减1)