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.mzph.cn/news/85876.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自己写过比较蠢的代码:从失败中学习的经验

文章目录 引言1. 代码没有注释2. 长函数和复杂逻辑3. 不恰当的变量名4. 重复的代码5. 不适当的异常处理6. 硬编码的敏感信息7. 没有单元测试结论 &#x1f389; 自己写过比较蠢的代码&#xff1a;从失败中学习的经验 ☆* o(≧▽≦)o *☆嗨~我是IT陈寒&#x1f379;✨博客主页&a…

【100天精通Python】Day68:Python可视化_Matplotlib 绘制热力图,示例+代码

目录 1 值热力图&#xff08;Value Heatmap&#xff09;: 2 密度热力图&#xff08;Density Heatmap&#xff09; 3 时间热力图&#xff08;Time Heatmap&#xff09;: 4 空间热力图&#xff08;Spatial Heatmap&#xff09; 5 渐变热力图&#xff08;Gradient Heatmap&am…

红黑树Java实现

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

Foxit PDF SDK Windows 9.1 Crack

Foxit PDF SDK 变更日志 Windows/Linux/Mac 2023 年 8 月 新功能/增强功能 在开始签名之前设置外观。支持使用共享字典添加签名。允许在调用 Signature::StartSign() 之前增量保存文档。在签名前修改现有未签名分页印章签名的外观。支持使用共享字典添加分页签名。忽略全角…

FPGA的主流技术与市场表现方面的调研报告

撰写简单的FPGA的主流技术与市场表现方面的调研报告&#xff0c;表达自己的认知和发展展望&#xff0c;500字&#xff0c;图片&#xff0c;表格除外 FPGA简介 FPGA&#xff08;Field-Programmable Gate Array&#xff09;是一种可编程逻辑器件&#xff0c;是在PAL &#xff08…

【软件测试】测试中的风险有哪些?

【软件测试面试突击班】如何逼自己一周刷完软件测试八股文教程&#xff0c;刷完面试就稳了&#xff0c;你也可以当高薪软件测试工程师&#xff08;自动化测试&#xff09; ​那么到底都有哪些风险要注意呢?如何解决呢?另外这些风险如何在计划中写明呢&#xff0c;不会写“张三…

苏宁滑块验证

网址&#xff1a;https://passport.suning.com/ids/login总结一下&#xff0c;别被他的表面现象给骗了&#xff0c;这玩意儿&#xff0c;个人认为&#xff0c;腾讯的都没法跟他比&#xff01;&#xff01;&#xff01; 难点&#xff1a;动态混淆&#xff0c;vmp&#xff0c;图片…

Django — 配置和路由

目录 一、项目的配置二、静态文件的配置三、路由1、概述2、代码实现2.1、后台管理页面2.2、子应用自定义页面2.3、子路由 3、路由解析顺序3.1、请求到达 Django 应用程序3.2、Django 根据 URL 路径查找匹配的路由3.3、第一个匹配的 URL 模式被选中3.4、相关联的视图函数被调用3…

Java由浅入深理解线程池设计和原理

目录 1 线程1.1 什么是线程&#xff1f;什么是进程&#xff1f;1.2 java中线程的实现方式有几种?1.3 线程的生命周期是什么&#xff1f; 2 线程存在的问题2.1 一个线程只能执行一个任务2.2 线程执行完后销毁,无法复用2.3 线程过多,导致JVM宕机 3 初识线程池3.1 了解J.U.C3.2 线…

追光者的梦

追光者的梦 鸿蒙中我茫然于世&#xff0c;你是钻入我心里的那束光 我所有的梦想都是和你热烈的拥抱 没有追到你时&#xff0c;我一直在路上 追到你时&#xff0c;我的人生就被你点燃 ——致所有的追光者 合肥先进光源国家重大科技基础设施项目及配套工程启动会刚开过&…

【matlab程序】海图单位的度分格式

【matlab程序】海图单位的度分格式 海洋与大气科学 点击蓝字 关注我们 思路来源 阅读文献&#xff1a; 文献中图片的横纵坐标出现半分画法&#xff1a; 半分画法&#xff0c;甚至更为精细的坐标轴在小区域研究中更为重要。 图片 图片 01 一度间隔 图片 代码 % 01 运…

2023 第十二届中国智能产业高峰论坛 - 文档大模型的未来展望

目录 前言文档图像分析识别与理解中的技术挑战 文档图像分析识别与理解的研究主题文档图像分析与预处理文档解析与识别版面分析与还原文档信息抽取与理解AI安全知识化&存储检索和管理 多模态大模型在文档图像处理中的应用多模态的GPT-4在文档图像上的表现多模态的Google Ba…

基因组注释(Annotation)

基因组组装完成后&#xff0c;或者是完成了草图&#xff0c;就不可避免遇到一个问题&#xff0c;需要对基因组序列进行注释。注释之前首先得构建基因模型&#xff0c;有三种策略&#xff1a; 从头注释(de novo prediction)&#xff1a;通过已有的概率模型来预测基因结构&#…

Java实验案例(一)

目录 案例一&#xff1a;买飞机票 案例二&#xff1a;开发验证码 案例三&#xff1a;评委打分 案例四&#xff1a;数字加密 案例五&#xff1a;数组拷贝 案例六&#xff1a;抢红包 案例七&#xff1a;找素数的三种方法 案例八&#xff1a;打印乘法口诀表 案例九&#x…

大厂面试-16道面试题

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

某度sign参数逆向

文章目录 前文分析完整代码结尾 前文 本文章中所有内容仅供学习交流&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff0c;若有侵权&#xff0c;请联系我立即删除&#xff01; 分析 经过我们几次抓包&#xff0c;测试&#xf…

解决jupyter打开的默认路径问题

已经安装完anaconda&#xff0c;但是jupyter每一次打开的路径都不是自己想要的路径&#xff0c;可以在配置文件中修改jupyter打开的默认路径&#xff0c;具体步骤如下&#xff1a; 首先打开anaconda的命令行 如果有多个环境的&#xff0c;需要输入conda activate 环境名称以下命…

list容器排序案例

案例描述:将Perspn自定义数据类型进行排序&#xff0c;Person中属性有姓名、年龄、身高 排序规则:按照年龄进行升序&#xff0c;如果年龄相同按照身高进行降序 代码示例 #include <iostream> #include <string.h> #include <iterator> #include <vector…

【C++面向对象侯捷】12.虚函数与多态 | 13.委托相关设计【设计模式 经典做法,类与类之间关联起来,太妙了,不断的想,不断的写代码】

文章目录 12.虚函数与多态举例&#xff1a;委托 继承【观察者模式】13.委托相关设计Composite 组合模式Prototype 原型模式 12.虚函数与多态 纯虚函数 一定要 子类重新定义的 继承和复合 关系下的构造和析构 举例&#xff1a;委托 继承【观察者模式】 13.委托相关设计 问题…

云原生安全性:保护现代应用免受威胁

文章目录 引言云原生安全性的挑战云原生安全性的关键实践1. 安全的镜像构建2. 网络策略3. 漏洞扫描和漏洞管理4. 认证和授权5. 日志和监控 云原生安全工具结论 &#x1f389;欢迎来到云计算技术应用专栏~云原生安全性&#xff1a;保护现代应用免受威胁 ☆* o(≧▽≦)o *☆嗨~我…