C运算符与表达式

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

运算符

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

定义一般都当耳旁风了

运算符分类

算术运算符

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

逻辑运算符:

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

这个遵循短路原则,算到前面的时候运算符结果已经确定了,就不会再判断后面的条件。

比如:与运算第一个条件为假,就没必要看第二个条件了

关系运算符

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

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

位运算符

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

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

赋值运算

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

也没啥好说的

其他运算符

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

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

运算符的优先级顺序

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

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

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

表达式

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

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

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

上述代码中,逗号操作符使得三个函数调用依次执行,且整个语句的结果是最后一个函数的返回值。

这里我想补充的是,链式调用。表达式中含有自定义数据类型的时候,应该注意表达式的返回值类型。

比如在C++中,返回的可能是个流对象,而且是全局唯一的对象。

欣赏一段有意思的代码


新手写这样的代码:乱七八糟

大佬写这样的代码:优雅

相关推荐
云淡风轻~窗明几净几秒前
角谷猜想与百度AI的对话dialog(原始稿)
人工智能·算法·机器学习·图论
龙亘川2 分钟前
城市公共安全治理如何从“人海战术“走向“数据驱动“?
大数据·数据库·人工智能·安全·microsoft·智慧城市·数据可视化
betazhou6 分钟前
Apache Seatunnel 抽取SQL server实时同步到Oracle-多表同步(五)
数据库·oracle·sqlserver·apache·seatunnel
神也畏惧菠萝9 分钟前
Coze 工作流数据库 Day06:架构与高级循环控制的深度技术分析
数据库·架构·llm·coze·coze数据库·数据库流程结构
麦壳饼12 分钟前
SonnetDB:空间函数别名的参数与兼容边界
数据库·sonnetdb
han688934 分钟前
jmeter操作数据库
数据库·jmeter
星马梦缘1 小时前
人工智能学院游戏设计大赛决赛 · 执行提纲
数据库·人工智能·游戏
水饺编程1 小时前
第2章:Linux 基础,重启命令
linux·c语言·汇编
小O的算法实验室1 小时前
ASOC,分层分数阶粒子群算法+无人机电场路径规划
算法
eleven_4u1 小时前
MySQL引擎层是如何工作的
数据库·mysql