C运算符与表达式

news2025/1/16 7:48:06

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

运算符

在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.coloradmin.cn/o/1239801.html

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

相关文章

微软Copilot即将对大陆开放,一起来看看都有什么好用的功能

微软发布了Copilot&#xff0c;12月1日起对大陆用户开放&#xff0c;以下是Copilot的11个新功能&#xff0c;你一定不想错过&#xff1a;1. PowerPoint&#xff1a; 将Word文档转换为演示文稿。从文件中快速创建演示文稿。通过关键幻灯片总结冗长的演示文稿。使用提示添加新的…

二分查找——经典题目合集

文章目录 &#x1f99c;69. x 的平方根&#x1f33c;题目&#x1f33b;算法原理&#x1f337;代码实现 &#x1f433;35. 搜索插入位置&#x1f33c;题目&#x1f33b;算法原理&#x1f337;代码实现 &#x1f9ad;852. 山脉数组的峰顶索引&#x1f33c;题目&#x1f33b;算法原…

成为AI产品经理——AI产品经理工作全流程

一、业务背景 背景&#xff1a;日常排球训练&#xff0c;中考排球项目和排球体测项目耗费大量人力成本和时间成本。 目标&#xff1a;开发一套用于实时检测排球运动并进行排球垫球计数和姿势分析的软件。 二、产品工作流程 我们这里对于产品工作流程的关键部分进行讲解&…

GIT实践与常用命令---回退

实践场景 场景1 回退提交 在日常工作中&#xff0c;我们可能会和多个同事在同一个分支进行开发&#xff0c;有时候我们可能会出现一些错误提交&#xff0c;这些错误提交如果想撤销&#xff0c;可以有两种解决办法:回退( reset )、反做(revert) keywords&#xff1a;reset、rev…

什么是应急演练脚本?其设计原则是什么?

应急演练脚本是一种系统性、有计划的模拟性文件&#xff0c;旨在测试和评估组织在紧急情况下的应对能力。这种脚本提供了一系列步骤和场景&#xff0c;以确保团队能够高效、协调地应对各种紧急事件。以下将详细探讨应急演练脚本的定义、设计原则以及实施过程。 一、应急演练脚本…

解决“Error: xxx.js 已被代码依赖分析忽略,无法被其他模块引用”的报错

开发微信小程序的时候&#xff0c;报错内容如下&#xff1a; 错误原因&#xff1a; 微信开发者工具从 1.05.2201210 版本开始&#xff0c;对小程序项目新增了无依赖文件过滤能力。 如果某个 js 文件被静态分析显示是无依赖文件&#xff0c;在实际运行时又被其他 js 文件 req…

软件测试最新面试文档(总共212页)

1、自动化代码中,用到了哪些设计模式? 单例设计模式工厂模式PO设计模式数据驱动模式面向接口编程设计模式 2、什么是断言( Assert) ? 断言Assert用于在代码中验证实际结果是不是符合预期结果&#xff0c;如果测试用例执行失败会抛出异常并提供断言日志 3、什么是web自动化…

【LeetCode二叉树进阶题目】606,102,107

二叉树进阶题目 606. 根据二叉树创建字符串解题思路及实现 102. 二叉树的层序遍历解题思路及实现 107. 二叉树的层序遍历 II解题思路及实现 606. 根据二叉树创建字符串 描述 给你二叉树的根节点 root &#xff0c;请你采用前序遍历的方式&#xff0c;将二叉树转化为一个由括号…

SageMath安装

Sagemath工具是免费开源的&#xff0c;针对数学计算的一个工具。 网页版免安装&#xff1a;https://sagecell.sagemath.org/ Sagemath是根据Linux系统编写的&#xff0c;所以Windows上使用的话&#xff0c;会创建一个Linux系统运行。 1. 安装 Windows本地安装参考&#xff1…

服务器系列之 成功解决 com.jcraft.jsch.JSchException: Auth fail

我 | 在这里 &#x1f575;️ 读书 | 长沙 ⭐软件工程 ⭐ 本科 &#x1f3e0; 工作 | 广州 ⭐ Java 全栈开发&#xff08;软件工程师&#xff09; &#x1f383; 爱好 | 研究技术、旅游、阅读、运动、喜欢流行歌曲 &#x1f3f7;️ 标签 | 男 自律狂人 目标明确 责任心强 ✈️公…

系列八、key是弱引用,gc垃圾回收时会影响ThreadLocal正常工作吗

一、key是弱引用&#xff0c;gc垃圾回收时会影响ThreadLocal正常工作吗 到这里&#xff0c;有些小伙伴可能有疑问&#xff0c;ThreadLocalMap的key既然是 弱引用&#xff0c;那么GC时会不会贸然地把key回收掉&#xff0c;进而影响ThreadLocal的正常使用呢&#xff1f;答案是不会…

使用EasyPlayer播放H.265视频流

使用EasyPlayer播放H.265视频流 EasyPlayer流媒体视频播放器 EasyPlayer流媒体视频播放器 EasyPlayer流媒体视频播放器可支持H.264与H.265编码格式&#xff0c;性能稳定、播放流畅&#xff0c;能支持RTSP、RTMP、HLS、FLV、WebRTC等格式的视频流播放&#xff0c;并且已实现网页…

TensorFlow实战教程(十七)-Keras搭建分类神经网络及MNIST数字图像案例分析

从本专栏开始,作者正式研究Python深度学习、神经网络及人工智能相关知识。前一篇文章详细讲解了Keras环境搭建、入门基础及回归神经网络案例。本篇文章将通过Keras实现分类学习,以MNIST数字图片为例进行讲解。基础性文章,希望对您有所帮助! 一.什么是分类学习 1.Classifica…

JMeter —— 接口自动化测试(数据驱动)

前言 之前我们的用例数据都是配置在HTTP请求中&#xff0c;每次需要增加&#xff0c;修改用例都需要打开JMeter重新编辑&#xff0c;当用例越来越多的时候&#xff0c;用例维护起来就越来越麻烦&#xff0c;有没有好的方法来解决这种情况呢&#xff1f;我们可以将用例的数据存…

Java小游戏之飞翔的小鸟

创建三个包&#xff0c;存放代码。把图片放进文件中 APP包&#xff08;运行&#xff09; GameApp类 package APP; import mian.GameFrame;public class GameApp {public static void main(String[] args) {new GameFrame();} } mian包&#xff08;主内容&#xff09; Barrie…

03梯度下降

目录 lambda基础知识 代码 核心算法&#xff1a; lambda基础知识 lambda 是 Python 中的一个关键字&#xff0c;用于创建匿名函数。匿名函数是一种没有具体名称的小型、临时的函数&#xff0c;通常用于一次性的、简单的操作。lambda 函数的语法如下&#xff1a;python Copy c…

3d标签云实现过程(tagcloud.js)同步原生和 vue

写在前面 本来是没有准备写这个知识点&#xff0c;但是下载这个 js 的时候发现很多都是要钱或者是积分的&#xff0c;我就不明白了一个开源了这么久的 js 怎么还有人拿来挣钱的&#xff0c;同时还有一些只有原生 html 的例子&#xff0c;但是现在都是 框架主导的一些项目&#…

2017年全国硕士研究生入学统一考试管理类专业学位联考数学试题——解析版

文章目录 2017 级考研管理类联考数学真题解析一、问题求解&#xff08;本大题共 5 小题&#xff0c;每小题 3 分&#xff0c;共 45 分&#xff09;下列每题给出 5 个选项中&#xff0c;只有一个是符合要求的&#xff0c;请在答题卡上将所选择的字母涂黑。真题&#xff08;2017-…

Android : ListView + BaseAdapter-2简单应用

​​容器与适配器&#xff1a;​​​​​ http://t.csdnimg.cn/ZfAJ7 实体类 News.java package com.example.mylistviewadapter2.entity;public class News {private String title;private String content;private int img;public News(String title, String conte…

蓝桥杯物联网_STM32L071_2_继电器控制

CubeMX配置&#xff1a; Function.c及Function.h&#xff1a; #include "Function.h" #include "gpio.h" void Function_LD5_ON(void){HAL_GPIO_WritePin(LD5_GPIO_Port, LD5_Pin, GPIO_PIN_RESET); }void Function_LD5_OFF(void){HAL_GPIO_WritePin(LD5_…