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

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语言的其他重要的基础知识,感谢大家支持懒大王!

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

 

相关文章:

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

目录 前言 一、运算符的概念与分类 二、算术运算符 三、关系运算符 四、逻辑运算符 五、赋值运算符 六、运算符的优先级 总结 前言 本篇文章是对运算符的具体讲解。 一、运算符的概念与分类 概念&#xff1a; 运算符就是一种告诉编译器执行特定的数学或逻辑操作的符…...

Android 遍历界面所有的View

关于作者&#xff1a;CSDN内容合伙人、技术专家&#xff0c; 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 &#xff0c;擅长java后端、移动开发、商业变现、人工智能等&#xff0c;希望大家多多支持。 目录 一、导读二、概览三、实践四、 推荐阅读 一、导读 我们…...

建筑能源管理(1)——建筑能源管理的概念

1、什么是建筑能源管理 目前&#xff0c;主要有三种不同的类型能源管理&#xff1a; (1)节约型能源管理 又称“减少能耗型”能源管理。这种管理方式着眼于能耗数量上的减少&#xff0c;采取限制用能的措施。例如&#xff0c;在非人流高峰时段停开部分电梯、在室外气温特别高时…...

SpringSecurity

明文存储密码&#xff0c;前加{noop}...

C++ vector模拟实现

目录 一.默认成员函数 二.扩容相关函数 三.[]重载 四.修改函数 五.迭代器 继上次写完string之后&#xff0c;可以写一个vector练练手以及熟悉其底层。vector是一个顺序表&#xff0c;相比普通数组不同点在于顺序表的数据必须是连续存放的。 一.默认成员函数 string是只存放字符…...

BUUCTF:[GYCTF2020]FlaskApp

Flask的网站&#xff0c;这里的功能是Base64编码解码&#xff0c;并输出 并且是存在SSTI的 /hint 提示PIN码 既然提示PIN&#xff0c;那应该是开启了Debug模式的&#xff0c;解密栏那里随便输入点什么报错看看&#xff0c;直接报错了&#xff0c;并且该Flask开启了Debug模式&am…...

好玩的调度技术

好玩的调度技术 文章目录 好玩的调度技术前言一、乱金柝-空间剥离二、拖拽编辑三、全端兼容 前言 最近感觉自己抑郁了&#xff0c;生态技术实在太庞大太复杂&#xff0c;所以我决定先停一段时间&#xff0c;在停下写生态的这两天写了几个调度的小玩意换换脑子&#xff0c;很有…...

Android 自定义加解密播放音视频(m3u8独立加密)

文章目录 背景加密流程音视频解密音视频播放结语 背景 当涉及App内部视频的时候&#xff0c;我们不希望被别人以抓包的形式来爬取我们的视频大视频文件以文件方式整个加密的话需要完全下载后才能进行解密当前m3u8格式虽然支持加密&#xff0c;但是ts格式的小视频可以独立播放的…...

常见的文件格式

一、C:\fakepath\新建文本文档.txt [object String] 实现方式&#xff1a; <input onchange"test(this.value)" type"file"></input><script>function test(e){console.log(e,Object.prototype.toString.call(e))}</script> 二、…...

浏览器输入url后回车展开过程

当你在浏览器中输入一个URL并敲下回车后&#xff0c;浏览器会执行一系列步骤来访问并展示网页。下面是浏览器访问网页的一般流程&#xff1a; DNS解析&#xff1a;浏览器首先会提取URL中的主机名&#xff0c;然后向DNS服务器发送请求&#xff0c;将主机名解析为对应的IP地址。这…...

Docker 容器创建命令说明

使用命令如下: docker run -itd --name=cluster -v /home/ClusterApp/cluster:/home/ClusterApp/cluster --restart=always --privileged=true -p 12000:12000 python:3.8 命令说明: docker run 创建一个容器并运行 docker run --help 可以查看所有的参数: 命令中参数说明 -…...

西瓜书读书笔记整理(六)—— 第六章 支持向量机

第六章 支持向量机 6.1 间隔与支持向量6.1.1 什么是支持向量机6.1.2 支持向量与间隔6.1.3 支持向量机的求解过程 6.2 对偶问题&#xff08;dual problem&#xff09;6.2.1 什么是对偶问题6.2.2 如何求解支持向量机的对偶问题 6.3 核函数&#xff08;kernel function&#xff09…...

蓝桥杯每日一题2023.9.23

4961. 整数删除 - AcWing题库 题目描述 分析 注&#xff1a;如果要进行大量的删除操作可以使用链表 动态求最小值使用堆&#xff0c;每次从堆中取出最小值的下标然后在链表中删除 注意long long 代码解释&#xff1a; while(k --){auto t q.top();q.pop();res t.first;i…...

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;个…...

leetcode11 盛水最多的容器

题目 给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 找出其中的两条线&#xff0c;使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 示例 输入&#xff1a;[1,8,6,2,5,4,8,…...

进入数据结构的世界

数据结构和算法的概述 一、什么是数据结构二、什么是算法三、如何去学习数据结构和算法四、算法的时间复杂度和空间复杂度4.1 算法效率4.2 大O的渐进表示法4.3 时间复杂度4.4 空间复杂度4.5 常见复杂度对比 一、什么是数据结构 数据结构是计算机存储、组织数据的方式。&#x…...

stm32之看门狗

STM32 有两个看门狗&#xff0c;独立看门狗和窗口看门狗&#xff0c;独立看门狗又称宠物狗&#xff0c;窗 口看门狗又称警犬。可用来检测和解决由软件错误引起的故障。两个看门狗的原理都是当计数器达到给定的超时值时&#xff0c;产生系统复位&#xff0c;对于窗口型看门狗同…...

纤维蛋白单体(FM)介绍

纤维蛋白单体&#xff08;FM&#xff09;是血栓形成的早期产物&#xff0c;是纤维蛋白原&#xff08;Fibrinogen&#xff0c;Fbg&#xff09;在凝血酶&#xff08;Thrombin&#xff09;的作用下&#xff0c;脱掉肽A&#xff08;Fibrinopeptide A&#xff0c;Fp A&#xff09;与…...

知识图谱实战导论:从什么是KG到LLM与KG/DB的结合实战

前言 本文侧重讲解&#xff1a; 什么是知识图谱LLM与langchain/数据库/知识图谱的结合应用 比如&#xff0c;虽说基于知识图谱的问答 早在2019年之前就有很多研究了&#xff0c;但谁会想到今年KBQA因为LLM如此突飞猛进呢 第一部分 知识图谱入门导论 //待更.. 第二部分 LLM与…...

第5章 会话与会话技术

第5章 会话与会话技术 一. 单选题&#xff08;共5题&#xff0c;50分&#xff09;二. 判断题&#xff08;共5题&#xff0c;50分&#xff09; 一. 单选题&#xff08;共5题&#xff0c;50分&#xff09; (单选题) 阅读下面代码&#xff1a; Book book BookDB.getBook(id)…...

MobaXterm远程连接频繁掉线?3个SSH保活设置让你告别断连烦恼

MobaXterm远程连接频繁掉线&#xff1f;3个SSH保活设置让你告别断连烦恼 当你在深夜调试代码&#xff0c;或是处理关键服务器运维任务时&#xff0c;突然弹出的"Connection closed"提示足以让人抓狂。MobaXterm作为Windows平台最受欢迎的全能终端工具&#xff0c;其免…...

all-MiniLM-L6-v2实战教程:用Python快速实现文本聚类分析

all-MiniLM-L6-v2实战教程&#xff1a;用Python快速实现文本聚类分析 1. 引言&#xff1a;为什么选择all-MiniLM-L6-v2 文本聚类是自然语言处理中的基础任务&#xff0c;它能帮助我们发现海量文本中的隐藏模式。传统方法如TF-IDF或词袋模型往往难以捕捉语义信息&#xff0c;而…...

终极指南:如何从零开始打造你的第一台六足机器人

终极指南&#xff1a;如何从零开始打造你的第一台六足机器人 【免费下载链接】hexapod 项目地址: https://gitcode.com/gh_mirrors/hexapod5/hexapod 你是否梦想过亲手制作一台能够灵活行走、稳定爬行的六足机器人&#xff1f;想要体验机器人制作的乐趣&#xff0c;却担…...

Qwen3.5-4B-Claude-Opus部署教程:模型路径软链失效时的容错加载机制

Qwen3.5-4B-Claude-Opus部署教程&#xff1a;模型路径软链失效时的容错加载机制 1. 模型概述 Qwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF是基于Qwen3.5-4B的推理蒸馏模型&#xff0c;特别强化了结构化分析、分步骤回答以及代码与逻辑类问题的处理能力。该版本以GG…...

LangChainJS性能优化:大规模AI应用的高效处理指南

LangChainJS性能优化&#xff1a;大规模AI应用的高效处理指南 【免费下载链接】langchainjs 项目地址: https://gitcode.com/GitHub_Trending/la/langchainjs LangChainJS是一个强大的JavaScript/TypeScript框架&#xff0c;专门用于构建基于大语言模型&#xff08;LLM…...

lite-avatar形象库入门:如何查找、预览并下载心仪的数字人形象

lite-avatar形象库入门&#xff1a;如何查找、预览并下载心仪的数字人形象 1. 数字人形象库简介 在数字人项目开发中&#xff0c;一个合适的虚拟形象往往能让用户体验大幅提升。lite-avatar形象库正是为解决这一需求而生的专业资源库。 这个基于HumanAIGC-Engineering/LiteA…...

网络安全学习攻略宝典,从菜鸟到高手的必由之路

想成为一名真正的黑客到底该怎么学&#xff1f; 从0开始又该从何学起呢&#xff1f; 很多人想学习网络安全&#xff0c;却不知道从何下手。别迷茫&#xff0c;这篇文章为你指明方向&#xff0c;无论你是零基础小白&#xff0c;还是有一定基础想提升的人&#xff0c;都能从中找…...

当孩子冲动行为影响学习,如何借助哈洛韦尔医生的情绪管理技巧?

如何有效应对孩子情绪管理困难&#xff0c;促进学习进步 面对孩子的情绪管理困难&#xff0c;家长和教育者可以采用一些实用的策略来帮助他们更好地表达情绪和应对挑战。首先&#xff0c;建立一个安全的环境非常重要&#xff0c;让孩子感到可以自由表达自己的情感而不必担心负面…...

实战LangGraph构建智能客服系统:在快马平台实现工单自动分类与处理全流程

今天想和大家分享一个用LangGraph构建智能客服系统的实战经验。这个项目主要解决工单自动分类和处理的问题&#xff0c;整个过程在InsCode(快马)平台上完成&#xff0c;从开发到部署一气呵成。 项目背景与需求分析 传统客服系统需要人工处理大量工单&#xff0c;效率低下且容易…...

临近起飞,在哪个平台更容易捡漏特价机票?2026年实测指南

“机票越临近起飞越便宜”——这个说法你一定听过。每逢假期临近&#xff0c;总有人在社交媒体上分享自己“起飞前两小时抢到白菜价机票”的神奇经历。但当你真的想在清明、五一出行前“赌一把”时&#xff0c;往往发现价格不仅没降&#xff0c;反而翻倍了。那么问题来了&#…...