当前位置: 首页 > news >正文

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
http://www.lryc.cn/news/163938.html

相关文章:

  • vue使用谷歌地图实现地点查询
  • 前端该了解的网络知识
  • python3在虚拟环境实用vscode调试错误输出ModuleNotFoundError: No module named ‘django‘解决方法
  • 如何获得一个Oracle 23c免费开发者版
  • 机器学习策略二——优化深度学习系统
  • Pytorch Advanced(三) Neural Style Transfer
  • 英飞凌TC3xx--深度手撕HSM安全启动(三)--TC3xx HSM系统架构
  • 黑马JVM总结(五)
  • C语言入门Day_18 判断和循坏的小结
  • mac 好用的工具推荐
  • 星际争霸之小霸王之小蜜蜂(十二)--猫有九条命
  • 【软件分析/静态分析】chapter8 课程11/12 指针分析—上下文敏感(Pointer Analysis - Context Sensitivity)
  • 时间复杂度与空间复杂度详解
  • 目录操作函数
  • PlantUML入门教程:画时序图
  • C#范围运算符
  • 云数据库知识学习——云数据库产品、云数据库系统架构
  • C++中引用详解!
  • VUE3+TS项目无法找到模块“../version/version.js”的声明文件
  • 数据结构-堆的实现及应用(堆排序和TOP-K问题)
  • Spring 条件注解没生效?咋回事
  • 96. 不同的二叉搜索树
  • Android Jetpack 中Hilt的使用
  • 批量采集的时间管理与优化
  • uniApp监听左右滑动事件
  • 十八、MySQL添加外键?
  • 图像文件的操作MATLAB基础函数使用
  • 【k8s】Kubernetes版本v1.17.3 kubesphere 3.1.1 默认用户登录失败
  • Mysql加密功能
  • redis-win10安装和解决清缓存报错“Error: Protocol error, got “H“ as reply type byte”