C运算符与表达式

跟着肯哥(不是我)学运算符与表达式

运算符

在C语言中,运算符是一种用来执行特定操作的符号或关键字。它们用于对变量、常量和表达进行计算、逻辑判断和位操作等。

定义一般都当耳旁风了

运算符分类

算术运算符

+-*/%加减乘除取模,这没啥好说的

逻辑运算符:

  • 与:&&
  • 或:||
  • 非:!

这个遵循短路原则,算到前面的时候运算符结果已经确定了,就不会再判断后面的条件。
比如:与运算第一个条件为假,就没必要看第二个条件了

关系运算符

  • 等于==
  • 不等于!=
  • 大于>
  • 小于<
  • 大于等于>=
  • 小于等于<=

与小学数学规则相同,也没什么好说的

位运算符

  • 按位与&
  • 按位或|
  • 按位异或^
  • 左移<<
  • 右移>>

对同一个变量进行两次异或可以得到原来的值,可以用于简单的对称加密

赋值运算

  • 赋值=
  • 复合赋值+=-=*=/=%=&=|=^=<<=>>=

也没啥好说的

其他运算符

  • 返回变量或数据类型的大小sizeof
  • 取地址&
  • 指针*
  • 条件表达式?:
  • 逗号运算符,

这些也是运算符,这件事,我之前是没想过的。

运算符的优先级顺序

这我直接复制粘贴了,猜你也记不住

以下是常见运算符按照优先级从高到低的顺序:

  1. 圆括号:()括号可以用于明确指定运算的优先级,可以改变默认的优先级规则。
  2. 单目运算符:++--(前缀和后缀递增递减)、+(正号)、-(负号)、!(逻辑非)、~(位求反)。
  3. 算术运算符:*(乘法)、/(除法)、%(取模)。
  4. 加减运算符:+(加法)、-(减法)。
  5. 移位运算符:<<(左移)和>>(右移)。
  6. 关系运算符:>(大于)、<(小于)、>=(大于等于)、<=(小于等于)。
  7. 相等性运算符:==(等于)、!=(不等于)。
  8. 位运算符:&(按位与)、^(按位异或)、|(按位或)。
  9. 逻辑运算符:&&(逻辑与)和 ||(逻辑或)。
  10. 条件运算符:?:(三元运算符)。
  11. 赋值运算符:=(赋值)、+=-=*=/=%=&=^=|=<<=>>=
  12. 逗号运算符:逗号用于分隔表达式,并按照从左到右的顺序进行求值。

表达式

表达式是由运算符、操作数和函数调用组成的代码片段,用于执行特定的计算或操作。表达式可以是简单的变量、常量,也可以是由运算符连接起来的复杂的组合。

定义就当耳旁风略过了,下面也是从讲义搬运过来的:

  • 算术表达式(Arithmetic Expressions):由算术运算符(如+-*/%)和操作数(变量或常量)组成的表达式。算术表达式用于执行基本的数学运算,如加减乘除等。
  • 逻辑表达式(Logical Expressions):由逻辑运算符(如&&||!)和操作数(变量或常量)组成的表达式。逻辑表达式用于执行逻辑判断,返回布尔值(truefalse)。
  • 关系表达式(Relational Expressions):由关系运算符(如==!=><>=<=)和操作数(变量或常量)组成的表达式。关系表达式用于比较操作数之间的关系,返回布尔值。
  • 位运算表达式(Bitwise Expressions):由位运算符(如&|^<<>>)和操作数(变量或常量)组成的表达式。位运算表达式用于对操作数的内部位进行操作,通常用于位级的操作和优化。
  • 条件表达式(Conditional Expressions):也称为三元表达式(Ternary Expression),由条件运算符(? :)和三个操作数组成的表达式。条件表达式根据一个条件的结果,选择返回两个操作数中的一个。
  • 赋值表达式(Assignment Expressions):由赋值运算符(=+=-=*=/=%=等)和操作数组成的表达式。赋值表达式用于将一个值或表达式的结果赋给变量。
  • 逗号表达式(Comma Expressions):它是一种特殊的表达式,它由逗号操作符(,)分隔的多个子表达式组成。逗号表达式的求值过程从左到右依次求值每个子表达式,并将最后一个子表达式的结果作为整个逗号表达式的结果。
int result =func1(),func2(),func3();

上述代码中,逗号操作符使得三个函数调用依次执行,且整个语句的结果是最后一个函数的返回值。
这里我想补充的是,链式调用。表达式中含有自定义数据类型的时候,应该注意表达式的返回值类型。
比如在C++中,返回的可能是个流对象,而且是全局唯一的对象。

欣赏一段有意思的代码

image.png
44388c2e3e3b52e8edd56c0dc761dca.jpg
新手写这样的代码:乱七八糟
大佬写这样的代码:优雅

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

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

相关文章

计算机组成原理(万字爆肝整理)

第一章 计算机系统概述 “较简单&#xff0c;不做过多赘述&#xff0c;后面会详细学到” 第一节 计算机系统层次结构 1.计算机系统的基本组成&#xff1a;硬件软件 2.计算机硬件的基本组成&#xff1a;运算器存储器控制器输入设备输出设备 3.系统软件和应用软件 系统软件…

【PyGIS】使用阿里AIEarth快速下载指定区域指定年份的土地利用数据

说明 中国逐年土地覆盖数据集(CLCD) 由武汉大学的杨杰和黄昕教授团队基于Landsat影像制作了中国逐年土地覆盖数据集(annual China Land Cover Dataset, CLCD),数据包含1985—2021年中国逐年土地覆盖信息。研究团队基于Landsat长时序卫星观测数据,构建时空特征,结合随机森…

编码的发展历史

编码的发展历史 ASCII&#xff1a; ASCII编码使用7位二进制数表示一个字符&#xff0c;范围从0到127。每个字符都有一个唯一的ASCII码值与之对应。例如&#xff0c;大写字母"A"的ASCII码是65&#xff0c;小写字母"a"的ASCII码是97。 ASCII字符集包括英文…

2023年【起重机械指挥】考试题及起重机械指挥找解析

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 起重机械指挥考试题考前必练&#xff01;安全生产模拟考试一点通每个月更新起重机械指挥找解析题目及答案&#xff01;多做几遍&#xff0c;其实通过起重机械指挥作业考试题库很简单。 1、【多选题】按照事故造成的人…

Java基础(程序控制结构篇)

Java的程序控制结构与C语言一致&#xff0c;分为顺序结构、选择结构&#xff08;分支结构&#xff09;和循环结构三种。 一、顺序结构 如果程序不包含选择结构或是循环结构&#xff0c;那么程序中的语句就是顺序的逐条执行&#xff0c;这就是顺序结构。 import java.util.Sc…

拒绝“信息茧房”,不做“井底之蛙”

前言 在信息爆炸的时代&#xff0c;我们每天都会被各种各样的信息包围着。这些信息来自各种渠道&#xff0c;如社交媒体、新闻媒体、搜索引擎、推荐系统等等。在算法和选择下&#xff0c;社交平台、购物平台帮大家过滤掉不熟悉、不喜欢、不感兴趣的内容&#xff0c;只推荐想看…

langchain 部署组件-LangServe

原文&#xff1a;&#x1f99c;️&#x1f3d3; LangServe | &#x1f99c;️&#x1f517; Langchain LangServe &#x1f6a9; We will be releasing a hosted version of LangServe for one-click deployments of LangChain applications. Sign up here to get on the wa…

uni-app 使用uni.getLocation获取经纬度配合腾讯地图api获取当前地址

前言 最近在开发中需要根据经纬度获取当前位置信息&#xff0c;传递给后端&#xff0c;用来回显显示当前位置 查阅uni-app文档&#xff0c;发现uni.getLocation () 可以获取到经纬度&#xff0c;但是在小程序环境没有地址信息 思考怎么把经纬度换成地址&#xff0c;如果经纬度…

使用gin 代理 web网页

问web项目的代理&#xff0c;业界常用的方案是nginx做代理&#xff0c;这个是网上最多资料的。 因为我需要做自己的流量转发&#xff0c;也就是所有访问都要经过我的一个流量分发微服务&#xff0c;这和nginx作用冲突了。如果再加个nginx来做第一层方向代理和网页的静态资源代…

Axios使用方式

ajax是JQUERY封装的XMLHttprequest用来发送http请求 Axios简单点说它就是一个js库,支持ajax请求,发送axios请求功能更加丰富,丰富在哪不知道 1.npm使用方式 vue项目中 npm install axios 2.cdn方式 <script src"https://unpkg.com/axios/dist/axios.min.js">…

层次分析法--可以帮助你做决策的简单算法

作用 层次分析法是一个多指标的评价算法&#xff0c;主要用来在做决策时&#xff0c;给目标的多个影响因子做权重评分。特别是那些需要主观决策的、或者需要用经验判断的决策方案&#xff0c;例如&#xff1a; 买房子&#xff08;主观决策&#xff09;选择旅游地&#xff08;…

【C++】泛型编程 ⑫ ( 类模板 static 关键字 | 类模板 static 静态成员 | 类模板使用流程 )

文章目录 一、类模板使用流程1、类模板 定义流程2、类模板 使用3、类模板 函数 外部实现 二、类模板 static 关键字1、类模板 static 静态成员2、类模板 static 关键字 用法3、完整代码示例 将 类模板 函数声明 与 函数实现 分开进行编码 , 有 三种 方式 : 类模板 的 函数声明…