C/C++运算符超详细讲解(系统性学习day5)

目录

前言

一、运算符的概念与分类

二、算术运算符

三、关系运算符

 四、逻辑运算符

五、赋值运算符

六、运算符的优先级 

总结


 

前言

本篇文章是对运算符的具体讲解。


一、运算符的概念与分类

概念:

运算符就是一种告诉编译器执行特定的数学或逻辑操作的符号,用来表示针对数据的特定操作,也称之为操作符。在计算机编程中,运算符用于操作数据,执行各种数学和逻辑运算,并产生结果。

分类:

1.根据分类对象的多少可以分为单目运算符(又名一元运算符)、双目操作符(又名二元操作符)、三目操作符(又名三元操作符)。

2.根据运算作用不同又可以分为:算术操作符、关系操作符、逻辑操作符、位运算符、赋值运算符、杂项操作符等。

二、算术运算符

含义:

算术运算符是对数值类型变量进行运算的,属于上述的双目操作符,结合性是从左到右的,算术优先级就是我们所知的 “ * 、/ 、% ”>“ +、 -”

(实例中的变量x为20,变量y为10)
运算符描述实例
+把两个操作数相加x+y得到15
第一个操作数减去第二个操作数x-y得到5
*把两个操作数相乘 x*y得到50
把两个操作数相除x/y得到2
%取模,结果为整除后的余数x%y得到0
++自增运算符,整数值加一x++得到11
--自减运算符,整数值减一x--得到9

需要注意的是:

a++(a--) 与 ++a(--a)的区别,前者为赋值运算,后者为运算赋值。当其作为一个独立的语言使用时,是等价的。但是当它出现在语句中就会有所不同。

下面通过一个实例代码来帮助大家更好的理解:

#include <stdio.h>int main()
{int y;int x = 10;y = x++; printf("先赋值后运算:\n");printf("y 的值是 %d\n", y );printf("x 的值是 %d\n", x );x = 10;y = x--; printf("y 的值是 %d\n", y );printf("x 的值是 %d\n", x );printf("先运算后赋值:\n");x = 10;y = ++x; printf("y 的值是 %d\n", y );printf("x 的值是 %d\n", x );a = 10;c = --a; printf("y 的值是 %d\n", y );printf("x 的值是 %d\n", x );return 0;
}

程序运行的结果如下:

152f43ff847647c8924bca7f102bbaf7.png
        
       
      
      
     
      
       

         

三、关系运算符

含义:

关系运算符的值只能是0或1。当运算符的值为真时,结果值都为1;反之,都为0;关系运算符也属于双目运算符,结合性为从左到右,优先级为“ > 、 < 、 >= 、 <=  ”  >  " == 、 !=  "

(假设实例中的变量x的值为20,变量y的值为10)
运算符 描述实例
==检查俩个操作数的值是否相等,如果相等则为真 x==y为假
!=检查俩个操作数的值是否相等,如果不相等则为真x!=y为真
检查左操作数是否大于右操作数,如果符合则为真 x>y为真
检查左操作数是否小于右操作数,如果符合则为真x<y为假
>=  检查左操作数是否大于等于右操作数,如果符合则为真x>=y为真
<=检查左操作数是否小于等于右操作数,如果符合则为真x<=y为假

下面通过一个实例代码来帮助大家更好的理解:

#include <stdio.h>int main()
{int x = 20;int y = 10;int c ;if( x == y ){printf("x 等于 y\n" );}else{printf("x 不等于 y\n" );}if ( x < y ){printf("x 小于 y\n" );}else{printf("x 不小于 y\n" );}if ( x > y ){printf("x 大于 y\n" );}else{printf("x 不大于 y\n" );}int t;t = x;x = y;y = t;if ( x <= y ){printf("x 小于或等于 y\n" );}if ( y >= x ){printf("y 大于或等于 x\n" );}return 0;}

   程序运行的结果如下:
     3779239c1bd04fed8e2402627be646f8.png
        
       
        
   
     

 

 四、逻辑运算符

含义:

用于连接多个条件的运算符,结果也是为真(1)或假(0),结合性为从右到左

(假设实例中的变量x的值为0,变量y的值为1)
运算符 描述实例
&&称之为逻辑与运算符,当且仅当俩个操作数都不为零时,条件为真。A&&B为假
||称之为逻辑或运算符,当俩个操作数存在人一个非零时,条件为真。A||B为真
称之为逻辑非运算符,用来逆转操作数的逻辑状态。将真变为假,假变为真。!(A&&B)为真

下面通过一个实例代码来帮助大家更好的理解:

#include <stdio.h>int main()
{int x = 20;int y = 10;if ( x && y ){printf("条件1为真\n" );}if ( x || y ){printf("条件2为真\n" );}x = 0;y = 10;if ( x && y ){printf("条件3为真\n" );}else{printf("条件3为假\n" );}if ( !(x && y) ){printf("条件4为真\n" );}return 0;
}

程序运行的结果如下:

f828e6f945d142808a73ea1f5b58c6e7.png
       
         

              

五、赋值运算符

含义:

赋值运算符就是将某个值赋给某个指定的变量,结合性为从右到左

运算符 描述实例
简单的赋值运算符,把右边的操作数赋给左边操作数    C=A+B将把A+B的值赋给C
+=加且赋值运算符,把左边操作数加上右边操作数的结果赋值给左面的操作数 C+=A相当于C=C+A
-=  减且赋值运算符,把左面的操作数减右面操作数的结果赋值给左面的操作数C-=A相当于C=C-A
*=乘且赋值运算符,把左面的操作数乘以右边的结果赋值给左面的操作数C*=A相当于C=C*A
/=除且赋值操作符,把左面的操作数除以右面的操作数的结果赋值给左面的操作数C/=A相当于C=C/A
%=求模且赋值运算符,求两个操作数的模赋值给左边的操作数C%=A相当于C=C%A
<<=  左移且赋值运算符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

 下面通过一个实例代码来帮助大家更好的理解:      

#include <stdio.h>int main()
{int a = 21;int c ;c =  a;printf(" = 的运算符实例,c 的值 = %d\n", c );c +=  a;printf("+= 的运算符实例,c 的值 = %d\n", c );c -=  a;printf("-= 的运算符实例,c 的值 = %d\n", c );c *=  a;printf("*= 的运算符实例,c 的值 = %d\n", c );c /=  a;printf("/= 的运算符实例,c 的值 = %d\n", c );c <<=  2;printf("<<= 的运算符实例,c 的值 = %d\n", c );c >>=  2;printf(">>= 的运算符实例,c 的值 = %d\n", c );c &=  2;printf("&= 的运算符实例,c 的值 = %d\n", c );c ^=  2;printf("^= 的运算符实例,c 的值 = %d\n", c );c |=  2;printf("|= 的运算符实例,c 的值 = %d\n", c );return 0;
}

   程序运行的结果如下:

85fe7038d19e49209fb2cfdac1093e00.png
       
      
        
        
        
   
        

        

六、运算符的优先级 

 含义:

运算符的优先级往往会影响一个表达式的运算的结果,比如最常见的就是乘除运算的优先级大于加减运算。

类型运算符结合性
乘除 *   /   %从左到右
加减 +  -从左到右
后缀() [] ++ -- 从左到右
一元+  -  ! ~ ++ --(type)* & sizeof从右到左
移位 <<  >>从左到右
关系<<= >>=从左到右
相等与不等==   !=从左到右
位与AND&从左到右
位异或XOR    ^从左到右
位或OR |从左到右
逻辑与AND&&从左到右
逻辑或OR||从左到右
条件?:从右到左
赋值 =  +=   -=   *=   /=    %=    >>=   <<=   &=  ^= |=从右到左
逗号,从左到右

   

 


总结

        本篇文章详细地讲了C语言的运算符,希望能够帮到大家!

       以后还会给大家展现更多关于C语言的其他重要的基础知识,感谢大家支持懒大王!

       希望这篇博客能给各位朋友们带来帮助,最后懒大王请来过的朋友们留下你们宝贵的三连以及关注,感谢你们!

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/140168.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

用PHP实现极验验证功能

极验验证是一种防机器人的验证机制&#xff0c;可以通过图像识别等方式来判断用户是否为真实用户。在实现极验验证功能时&#xff0c;您需要进行以下步骤&#xff1a; 1 注册极验账号&#xff1a; 首先&#xff0c;您需要在极验官网注册账号并创建一个应用&#xff0c;获取相应…

pom.xml中解决“vulnerable dependency maven:org.yaml:snakeyaml:1.33“警告问题

问题 当我们引入依赖的时候&#xff0c;pom文件会有这样的提示&#xff0c;其大概的意思就是 maven:org.yaml:snakeyaml:1.30"表示通过Maven引入了一个潜在的安全漏洞依赖项"org.yaml:snakeyaml:1.30" 解决办法 其实我们就是要更改这个依赖的版本&#xff0c…

无需申请专线、无需改动网络,ERP/MES管理系统如何远程访问?

深圳市某模具公司作为一家以设计、制作五金模具、五金冲压、机加工件、加工经营为主的五金企业。为了实现更为高效的生产管理流程&#xff0c;引入了面向钣金/五金行业信息化建设的ERP/MES管理系统及方案&#xff0c;并将其部署在了企业总部的内网服务器。 除了总部访问需求外&…

Linux 故障定位手段之保存某个时间段内的top结果

在Linux中对故障原因进行定位时&#xff0c;除了查看对应的软体运行日志、OS运行日之外&#xff0c;还可以查看 top 的资源消耗结果。 参考语句&#xff1a; 以CPU为基准列进行排序记录TOP结果 nohup top -d 1 -b -o %CPU | tee -a /tmp/cpu.txt & 语句含义&#xff1a;每…

【视觉SLAM入门】8. 回环检测,词袋模型,字典,感知,召回,机器学习

"见人细过 掩匿盖覆” 1. 意义2. 做法2.1 词袋模型和字典2.1.2 感知偏差和感知变异2.1.2 词袋2.1.3 字典 2.2 匹配(相似度)计算 3. 提升 前言&#xff1a; 前端提取数据&#xff0c;后端优化数据&#xff0c;但误差会累计&#xff0c;需要回环检测构建全局一致的地图&…

【python】Seaborn画热力图,只显示第一行数字---seaborn与matplotlib版本问题

github上有这个讨论&#xff1a;Heatmap only has annotation text in the top row only Issue #3478 mwaskom/seaborn (github.com)翻译过来就是&#xff1a;热图仅在最上面一行有注释文本&#xff1b; 原因就是matplotlib 在2023年9月更新到了 3.8.0版本&#xff0c;改变了…

C语言数组和指针笔试题(三)(一定要看)

目录 字符数组四例题1例题2例题3例题4例题5例题6例题7 结果字符数组五例题1例题2例题3例题4例题5例题6例题7结果字符数组六例题1例题2例题3例题4例题5例题6例题7 结果 感谢各位大佬对我的支持,如果我的文章对你有用,欢迎点击以下链接 &#x1f412;&#x1f412;&#x1f412;个…

UML六大关系总结

UML六大关系有&#xff1a;继承、关系、聚合、组合、实现、依赖。分为通过图和代码总结这些关系。 1、继承 继承&#xff08;Inheritance&#xff09;&#xff1a;表示类之间的继承关系&#xff0c;子类继承父类的属性和方法&#xff0c;并可以添加自己的扩展。 继承&#x…

大厂面试-16道面试题

1 java集合类有哪些&#xff1f; List是有序的Collection&#xff0c;使用此接口能够精确的控制每个元素的插入位置&#xff0c;用户能根据索引访问List中元素。常用的实现List的类有LinkedList&#xff0c;ArrayList&#xff0c;Vector&#xff0c;Stack。 ArrayList是容量…

用于设计 CNN 的 7 种不同卷积

一 说明 最近对CNN架构的研究包括许多不同的卷积变体&#xff0c;这让我在阅读这些论文时感到困惑。我认为通过一些更流行的卷积变体的精确定义&#xff0c;效果和用例&#xff08;在计算机视觉和深度学习中&#xff09;是值得的。这些变体旨在保存参数计数、增强推理并利用目标…

GO语言篇之发布开源软件包

GO语言篇之发布开源软件包 文章目录 GO语言篇之发布开源软件包新建仓库拉取到本地初始化项目编写代码提交代码发布引用软件包 我们写GO语言程序的时候难免会引用第三方的软件包&#xff0c;那么你知道别人是怎么发布自己的软件包吗&#xff0c;别急&#xff0c;这篇博客教你怎么…

Unity中UI组件对Shader调色

文章目录 前言一、原理在Shader中直接暴露的Color属性&#xff0c;不会与UI的Image组件中的Color形成属性绑定。因为UI的Image组件中更改的颜色是顶点颜色&#xff0c;如果需要在修改组件中的颜色时&#xff0c;使Shader中的颜色也同时改变。那么就需要在应用程序阶段传入到顶点…

第P6周—好莱坞明星识别(2)

五、模型训练 # 训练循环def train(dataloader, model, loss_fn, optimizer):size len(dataloader.dataset) # 训练集的大小num_batches len(dataloader) # 批次数目train_loss, train_acc 0, 0 # 初始化训练损失和正确率for X, y in dataloader: # 获取图片及其标签X…

20-SpringCloudAlibaba-3

七 分布式事物处理 1 认识本地事物 什么是事物 事务就是针对数据库的一组操作&#xff0c;它可以由一条或多条SQL语句组成&#xff0c;同一个事务的操作具备同步的特点&#xff0c;事务中的语句要么都执行&#xff0c;要么都不执行。 举个栗子&#xff1a; 你去小卖铺买东西&…

红黑树Java实现

文章目录 红黑树1. 概念性质2. 红黑树节点定义3. 红黑树的插入情况1情况2情况3其它细节问题插入代码实现 4. 红黑树的验证5.性能分析 红黑树 1. 概念性质 红黑树也是一种二插搜索树&#xff0c;每一个节点上比普通二插搜索树都增加了一个存储位置表示节点的颜色&#xff0c;可…

Spring面试题15:Spring支持几种bean的作用域?singleton、prototype、request的区别是什么?

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:Spring支持几种bean的作用域? Spring支持以下几种Bean的作用域: Singleton(单例):这是Spring默认的作用域。使用@Scope(“singleton”)注解或…

pyspark常用算子总结

欢迎关注微信公众号&#xff0c;更多优质内容会在微信公众号首发 1. pyspark中时间格式的数据转换为字符串格式的时间&#xff0c;示例代码 from datetime import datetimedate_obj datetime(2023, 7, 2) formatted_date date_obj.strftime("%Y-%m-%d %H:%M:%S")p…

MySQL基础—从零开始学习MySQL

01.MySQL课程介绍_哔哩哔哩_bilibili 1、MySQL安装 以管理员身份运行cmd net start mysql80net stop mysql80 客户端连接 1). 方式一&#xff1a;使用MySQL提供的客户端命令行工具 2). 方式二&#xff1a;使用系统自带的命令行工具执行指令 mysql [-h 127.0.0.1] [-P 3…

C++真的是 C加加

&#x1f4dd;个人主页&#xff1a;夏目浅石. &#x1f4cc;博客专栏&#xff1a;C的故事 &#x1f3e0;学习社区&#xff1a;夏目友人帐. 文章目录 前言Ⅰ. 函数重载0x00 重载规则0x01 函数重载的原理名字修饰 Ⅱ. 引用0x00 引用的概念0x01 引用和指针区分0x03 引用的本质0x04…

SpringBoot-JWT生成

一、理论 1.配置pom.xml <!-- JWT令牌--><dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId><version>0.9.1</version></dependency> 2.加密方式 说明:官网JSON Web Tokens - jwt…