C++学习之运算符与表达式

算数运算符

基本的算数运算有加法、减法、乘法、除法和取模(求余数),对应的算数运算符分别为:+、-、*、/、%。至于用法,大家应该耳熟能详,这里不再过多赘述。
自增与自减运算符

运算符 说明
++ 自增运算符,将数值增加一
- - 自减运算符,将数值减少一

该运算符主要有前置和后置两种用法,很多人在刚开始接触的时候不知道区别,这里详细介绍一下:
eg:i=2; a=i++;这里是先把 i 的值赋给 a,然后i再加一,最后的结果是a=2,i=3;
i=2; a=++i;这里是 i 的值先加一,然后再将 i 赋给 a,最后的结果是a=3,i=3。

强制类型转换运算符

强制类型转换的两种形式:

  • (类型名)(表达式):如果表达式是单个变量可以不用括号
  • 类型名(表达式)

使用:

/*第一种用法*/
(double)a  //将a转成double类型
(int)(x+y)  //将x+y转成整型

/*第二种用法*/
double(a)
int(x+y)

关系运算符

运算符 描述
== 检查两个操作数的值是否相等,如果相等则条件为真
!= 检查两个操作数的值是否相等,如果不相等则条件为真
> 检查左操作数是否大于右操作数的值,如果是则条件为真
< 检查左操作数是否小于右操作数的值,如果是则条件为真
>= 检查左操作数是否大于等于右操作数的值,如果是则条件为真
<= 检查左操作数是否小于等于右操作数的值,如果是则条件为真

关系运算符表达式的值是“真”和“假”,用“1”和“0”来表示。

位运算符

运算符 描述
& 按位与,两个操作数同一位都是1结果才为1,其他的均为0
按位或,两个操作数同一位都是0结果才为0,其他的均为1
^ 按位异或,两个操作数同一位不同时为1则对应结果为1,否则为0
~ 按位取反,将操作数转化为二进制表示,然后将二进制为由1变为0,由0变为1
>> 二进制右移运算符,若a=0000 1000,b=a>>3,则b=0000 0001
<< 二进制左移运算符,若a=0000 1000,b=a<<3,则b=0100 0000

逻辑运算符

运算符 描述
&& 逻辑与运算符,两个操作数都是非0值,这条件为真
丨丨 逻辑或运算符,两个操作数有任意一个条件非0,则条件为真
逻辑非运算符,如果为真则将其转为假,反之亦然

条件运算符

条件运算符?:是一个三目运算符
语法:

表达式1 ? 表达式2:表达式3

如果满足表达式1的条件,则求解结果为表达式2,否则为表达式3.
eg:

// 求a,b中的最大值
max=a>b?a:b;

赋值运算符

“=”就是赋值运算符,把右边的操作数赋值给左边的操作数。
注意:

  • 赋值不是等号,具有方向性
  • “左值”必须是放在内存中可以访问且可以合法修改值的存储单元,通常只能是变量名
  • “右值”可以是常量,也可以是变量或者表达式,但一定要能取得确定的值
  • 如果赋值运算符两侧的类型不一样,但是都是数值型或者字符型,在赋值时会自动进行类型转换;将浮点型数据(包括单、双精度)赋给整型变量时,舍弃其小数部分

复合赋值运算符

运算符 描述
+= 加且赋值运算符,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
<<= 左移且赋值运算符,c<<=2相当于c=c<<2
>>= 右移且赋值运算符,c>>=2相当于c=c>>2
&= 按位与且赋值运算符,c&=2相当于c=c&2
^= 按位异或且赋值运算符,c^=2相当于c=c ^2
丨= 按位或且赋值运算符,c丨=2相当于c=c丨2

猜你喜欢

转载自blog.csdn.net/David_house/article/details/132791485