单片机c语言屏蔽第四位,【单片机C语言基础入门】第四章:运算符与表达式

2023-11-09

大家好,今天和大家探讨的是单片机C语言中的运算符和表达式。

前边介绍了C语言中的变量的表示,然而在计算的过程中只有变量是不能完成计算的,因此运算符和表达式为变量(包括常量)来做特定的操作,来实现数据的运算,因此运算符和表达式是C语言中不可或缺的部分。这节课我们主要介绍在运算中变量操作的运算符和表达式,并举例说明单片机C语言中常用的运算符和表达式。

表达式

在C语言中表达式指的是:用运算符将运算对象(一般是变量)连接起来。运算对象也成为是被运算量,它可以是数字,字符,甚至是函数。而表达是就是将这些被运算量通过运算符连接起来。常用的形式就是运算符+运算对象;比如:F(x)是一个运算公式,而a是一个变量,那么F(a)就是一个运算表达式;

运算符

常用的运算符主要有(下面还有很多衍生的符合运算符等):+-*/%++--

>>=<>==!==

!||&&^~I&

>>()[]{}:,

->sizeof.

根据运算变量的个数可以分为单目运算符和多目运算符,单目运算符指的是运算符的操作变量只有一个,而多目运算符的操作变量可以是两个、三个或者多个。比如:逻辑非运算符 !、按位取反运算符~、自增自减运算符++, --、负号运算符-、类型转换运算符(类型)、指针运算符和取地址运算符*和&、长度运算符sizeof,这些都是对单个变量进行操作的,因此为单目运算符。

在很多的情况下对变量的运算不是只用一种操作来完成的,这就会涉及在运算中那些先算那些后算,也就是运算符的优先级的问题,在通常情况下运算符的优先级如下表所示:

85125393_1

下面对运算符进行简单的解释。

1.赋值运算符=(注意这个和==的区别),在C语言中一个等号(=)表示赋值,它是双目的运算符,需要在运算符的两边都有变量,因此其形式为:变量=表达式

其表达式,就像我们前面介绍的,可以是简单的也可以是复杂的,比如前面介绍的表达式F(x),我们就要将这个运算的结果赋给变量b,那么就是可以写成b=F(a);赋值运算符在C语言中出现的频率是最高的。

2. 算术运算符,顾名思义算术运算符就是我们对数字进行的运算,主要包括+、-、*、/、%等,注意这是最基本的运算符,开方、取对数这些运算都是比较复杂的运算,一般都是由函数构成的,因此如果需要这些运算还得通过基本的运算来实现,也就是构建函数。

在这里也没有什么特别难理解的,需要注意的一点的是在单片机C语言中,经常会用到数目管显示,有时候需要将采集的数据分成单个的数字,比如将1234,分成1、2、3、4,这样单个数字分别显示在数码管上,在这里我们经常用/和%来实现(当然里面也有强制数据类型转换的观点)。比如将1234分解成1、 2、 3、 4;假设定义一个数组缓存来存放这四个数据

unsigned char databuff[4];

databuff[0]=1234/1000; //1

databuff[1]=1234/100%10;//2

databuff[2]=1234/10%100;//3

databuff[3]=1234%1000;// 4

这样就可以将1234进行分解,从而得到了每一位数据。

3. 关系运算符

关系运算符主要有==、<=、>=、!=这四个运算符属于双目运算符,用来表示变量与变量之间,变量与表达式,表达式与表达式之间的关系,通常在判断的语句中及常用到,在这里主要注意的是==和=的区别,在初学者中这两个符号经常搞混或者将赋值符号(=)误当做等于(==)来处理,这样有时候编译器不会报错,但得到的结果却和设计的结果有很大的出入,希望注意。=、>

4、逻辑运算符。

在单片机中经常用到逻辑运算,比如事件的发生(最终转化为信号的产生),很多的时候我们根据这些时间的逻辑关系来判断后面的事件是否发生,因此逻辑运算是在单片机中常用到的运算;在单片机中除了逻辑关系的运算以外还可以是数据的运算。

比如&和&&的关系,都表示逻辑与的关系,当用于表达式1 & 表达式2 和表达式1 && 表达式2的时候,都表示当两边的表达式为真的时候,整个结果才是真。

在这里&&有短路的功能,就是当判断表达式1为真的时候才去判断表达式2,如果表达式1是假的那么就不会再去判断表达式2,整个表达式就是假的,这样可以节省时间,一般在设计的的时候我们先把容易判断出错的放在前边,这样可以节省程序的运行时间。同样|和||在同样的表达的时候是相同的原理。

对于&还有一个功能就是按位与的功能,就是将两个非单字节的变量进行按位与的运算,比如0x11&0xff 运算的结果就是0x11;有了这个运算我们就可以单独的开启和屏蔽字节中的特定的位了(根据我们的选择)。比如,我只获取变量a(8位的)中的最低位,那么我们就可通过a&0x01来得到a的最低位。同样的原理也适用于|和||。

5. 符合运算符。

有的时候为了简洁,我们将复制表达式和元算符进行合并就出现了类似以下的表达:+=、-=、*=、/=、%=、|=、&=、<=、>>=、等符合运算的符号通常为 变量A+符合运算符 B,比如a+=5实际表示a=a+5;同样的道理a<=5;和 a="">=5;和><>=、>

6. 自增自减运算符。

i++(1--)、++i(--i)

在自增运算符中有i++型的和++i型的,那么他们的区别是i++是说使用变量后,i才会加1;而++i表示在使用变量i之前先进行加1,比如下面的例子:

i=1;

a=i++;

那么a等于1

但是如果:

i=1;

a=++i;

那么a就等于2

这是在程序中要注意的,特别是在循环的时候会出现越界的情况这样就会得到不想得到的结果。

6. 至于?:条件运算符和逗号运算符在单片机C语言中用到的次数比较少,因此在这里就不着重介绍了,有兴趣的可以自己看看,用得少不等于不用,有的时候还是会有很大的帮助的。

那么今天回顾一下我们主要的内容就是介绍了表达式和运算符在C语言中的表述。有了这些运算符我们就可以根据我们的需要将数字量进行运算从而得到输出量来控制我们要控制的信号(也就是控制的对象)。从另一方面来讲,这些基本的运算符和表达式构成是构成函数的基本元素(在一个就是下节要介绍的语句)。因此,知道了C语言的表达式和运算符就基本可以对变量进行运算了。这是本小结讲的内容,谢谢大家!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

单片机c语言屏蔽第四位,【单片机C语言基础入门】第四章:运算符与表达式 的相关文章

  • DCEL数据结构

    文章目录 前言 DCEL介绍 DCEL优势 DCEL数据结构实现 Point Vertex HalfEdge Face Reference 前言 虽然https blog csdn net baidu 34931359 article de
  • 探索无限可能的教育新领域,景联文教育GPT题库开启智慧教育新时代!

    随着人工智能技术的快速发展 教育领域也将迎来一场革命性的变革 景联文科技是AI基础数据行业的头部企业 近期推出了一款高质量教育GPT题库 景联文科技高质量教育GPT题库采用了先进的自然语言处理技术和深度学习算法 可以实现对各类题目的智能识别
  • UIIAlertController的自动消失

    自动消失的思路就是添加一个计时器 设置计时器的时间 让UIAlertController 通过dismiss消失 UIAlertController alert UIAlertController alertControllerWithTi
  • css知识学习系列(6)-每天10个知识点

    目录 1 CSS中的 box sizing 属性与 border 属性有什么关系 2 在CSS中 如何使用 calc 函数进行计算 有什么使用技巧 3 在CSS中 如何使用 import 引入外部样式表 有哪些注意事项 4 Flexbox和
  • C# 邮件发送

    一 准备工作 1 要想编写一个发送邮件的小工具 首先得了解以下内容 收件人 这封邮件的接收人 邮件发送者沟通交流的对象 抄送 这封邮件的接收人 邮件发送者希望被抄送者了解邮件内容 密件抄送 这封邮件的接收人 与抄送的唯一区别就是它能够让各个
  • flutter 弹窗队列封装,里面的自定义回调值得学习

    参考 里面的这里回调TaskCallback Function学习一下 挺重要的 import dart async 自定义回调类型 typedef TaskCallback void Function bool success dynam
  • 【异常】IDEA打开配置文件*.properties乱码

    一 异常内容 二 异常说明 properties配置文件的编码格式 通常情况下properties的默认编码格式为ISO 8859 1 但是这种文件往往是不可读的 因此需要进行编码格式的转换 三 异常解决 更改properties的编码格式
  • C4996 ‘strncpy‘: This function or variable may be unsafe. Consider using strncpy_s instead. To disa.

    C4996 strncpy This function or variable may be unsafe Consider using strncpy s instead To disa 原因 解决方案 注意事项 原因 strncpy进行
  • 下次造轮子前先看看现有的轮子吧

    转自 http www cppblog com merlinfang archive 2014 12 26 209311 aspx 下次造轮子前先看看现有的轮子吧 值得学习的C语言开源项目 1 Webbench Webbench是一个在li
  • 物理组件oracle,Oracle入门《Oracle介绍》第一章1-1

    1 Oracle 简介 a 对象关系型的数据库管理系统 ORDBMS b 在管理信息系统 企业数据处理 因特网及电子商务等领域使用非常广泛 c 在数据安全性与数据完整性控制方面性能优越 d 跨操作系统 跨硬件平台的数据互操作能力 2 Ora
  • C#中的数组

    C 中的数组 C 数组 Array foreach 索引 null 地址 http www cnblogs com txw1958 archive 2013 01 11 csharp array html 数组概述 数组是一种数据结构 它包
  • VC工程中几中后缀名文件的意义

    opt 工程关于开发环境的参数文件 如工具条位置等信息 aps AppStudio File 资源辅助文件 二进制格式 一般不用去管他 clw ClassWizard信息文件 实际上是INI文件的格式 有兴趣可以 研究 一下 有时候Clas
  • 拜小白教你Qt5.8.0+OpenCV3.2.0配置教程(详细版)

    本机环境 Windows 64位 Qt 5 8 0 OpenCV3 2 0 CMake3 8 2 最后结果 亲测可用 第0部分 前期准备 CMake官网下载地址 https cmake org download CMake安装教程请查看 拜
  • C语言的各类运算概述

    C语言的各类运算概述 C语言的一个很有用的特性就是支持按位布尔运算 位级运算 对char数据类型表达式求值的例子 逻辑运算 逻辑运算符 和 分别对应于命题逻辑中的OR AND和NOT 运算 逻辑运算认为所有非零的参数都表示TRUE 而参数0
  • Vue+Element-ui实现表单验证

    文章目录 效果 template js实现 校验通过的实现效果 效果 校验效果 template div div
  • [云原生专题-31]:K8S - 核心概念 - 大规模pods编排工具:工作负载(workloads)资源及其八大特性

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 https blog csdn net HiWangWenBing article details 122795902 目录 前言 第1章
  • C++11 deque用法总结(整理)

    目录 1 deque 简介 1 1 deque的创建和初始化 2 deque成员函数使用 2 1 有关增加元素的函数方法 2 2 有关删除元素的函数方法 2 3 iterator函数 遍历 2 4 其他有关函数 1 deque 简介 deq
  • 用CSS画一个三角形

    用边框border去画 让左 下透明transparent 效果如下图所示 div width 0px height 0px border left 100px solid transparent border bottom 100px s
  • Android 高级面试题及答案

    一 性能优化 1 如何对 Android 应用进行性能分析 android 性能主要之响应速度 和UI刷新速度 可以参考博客 Android系统性能调优工具介绍 首先从函数的耗时来说 有一个工具TraceView 这是androidsdk自

随机推荐

  • docker--知识点提炼

    1 docker命令 docker服务 info version 容器 ps run exec top stats logs port rm stop start kill inspect cp ctrl p ctrl q 镜像 login
  • Docker容器内Superset汉化

    一 进入容器将config py文件中的BABEL DEFAULT LOCALE en 改为BABEL DEFAULT LOCALE zh 进行简单汉化 Setup default language BABEL DEFAULT LOCALE
  • Ubuntu安装idea

    下载 进入https www jetbrains com idea download section linux 选择Ultimate版本 点击下载 我下载的是这个版本 https download jetbrains com cn ide
  • 通过配置NFS使Ubuntu和海思3559A板子共享目录

    之前在Ubuntu和海思3559A板子之间来回拷贝文件都是用的scp命令 不是很方便 这里通过配置NFS来实现它们之间共享目录 操作步骤如下 1 在Ubuntu上安装NFS 执行以下命令 执行结果如下 sudo apt get instal
  • An attempt was made to call a method that does not existThe attempt was made from following location

    Dubbo和zookeeper整合springboot报错 An attempt was made to call a method that does not exist The attempt was made from the fol
  • 利用XMLHttpRequest同步和异步下载二进制文件的解决方案。

    在XMLHttpRequest2里支持二进制数据的下载了 现分别以同步和异步两种方式分别介绍 异步的方式下载 xmlRequest open GET 0 jpg true xmlRequest responseType blob 这里是关键
  • Android Studio的APP目录下的build.gradle的配置说明

    Build gradle属性说明 声明是Android程序 apply plugin com android application android 程序在编译的时候会检查lint 有任何错误提示都会停止build lintOptions
  • 集合框架知识总汇之(list集合)

    目录 编辑 1 UML 统一建模语 3 List集合 3 1特点 3 2遍历方式 3 3List优化 初始容量10 负载因子1 5 3 4LinkedList 队列 堆栈 3 5如何对Arraylist进行去重处理 面试常问题 1 Coll
  • Django4.0+使用rest_framework_jwt的问题

    问题描述 python版本 3 10 Django版本 4 1 djangorestframework jwt版本 1 11 0 在写jwt认证功能时 发现run的时候会报以下错误 from django utils translation
  • VUE 自身页面跳转自身页面

    先说一下要实现的功能 点击原案件 要回到原案件 但是原案件页面和现在的页面一样 也就是自身跳转自身页面 路由地址不变 使用vue祖传的push 方法来挑转的话 你会发现可以跳转过去 但是页面会刷新 不会触发vue生命周期函数 方法一 thi
  • [转]No response for the toolbars in BEx Analyzer 2004s

    Summary Symptom After installing the frontend either from the CD or through applying the frontend support package or the
  • 2022年蓝桥杯省赛 C/C++ A组B题灭鼠先锋题解

    问题描述 本题为填空题 只需要算出结果后 在代码中使用输出语句将所填结果输出即可 灭鼠先锋是一个老少咸宜的棋盘小游戏 由两人参与 轮流操作 灭鼠先锋的棋盘有各种规格 本题中游戏在两行四列的棋盘上进行 游戏的规则为 两人轮流操作 每次可选择在
  • 《UNIX网络编程》卷一第四章学习笔记

    UNIX网络编程 卷一第四章学习笔记 4 2 socket函数 include
  • 2023华为OD机试真题【计算快递业务主站点/回溯法/深度优先搜索】

    题目描述 快递覆盖的范围有N的站 如果A和B都可以用来中转 我们就称A B站可达 如果A B可达 B C可达 则A C达 我们现在有N个编号 如果s i j 1 表示i j可达 如果s i j 0 表示i j不可达 现用二维数组给定N个站点
  • 使用python爬取微信公众号文章

    一 背景 有时候看到某一个微信公众号中的文章 觉得写的非常不错 有种当时就想把该公众号所有的文章都看完的冲动 但是使用手机看不是特别方便 就想把文章全部下载下来到电脑上面看 二 爬虫实现步骤 使用python爬取微信公众号文章 总共分为如下
  • 图片加载防闪动的CSS方法

    图片闪动 在移动端设置图片布局时 图片使用自适应的方式 其父元素的高度是被图片高度撑开的 在图片加载前 父元素高度为0 加载后 父元素高度为图片高度 这样的过程会造成视觉上的闪烁 影响用户体验 因此 在用图片撑开父元素高度之前 就需要给父元
  • 安装sql server时提示缺少.NET 3.5 sp1

    这几天遇到了一个问题 在安装sql server的时候总是提示我没有安装 NET framework 3 5 sp1 但是我电脑上已经安装了它 多次尝试之后我百思不得其解 今天终于解决了 我的系统是win8升级上来的win10 在升级的时候
  • 一种横向业务的解决方案 -- AOP

    AOP Aspect Oriented Programming 即面向切片编程 所谓面向切片编程 就是可以按照时间 将程序分成无数个时间节点 利用AOP的思想 可以在任何一个时间节点插入其他的代码 来实现自己的业务需求 换句话说 对于那些非
  • java循环栅栏CyclicBarrier 使用详解

    1 CyclicBarrier 是什么 从字面上的意思可以知道 这个类的中文意思是 循环栅栏 大概的意思就是一个可循环利用的屏障 它的作用就是会让所有线程都等待完成后才会继续下一步行动 举个例子 就像生活中我们会约朋友们到某个餐厅一起吃饭
  • 单片机c语言屏蔽第四位,【单片机C语言基础入门】第四章:运算符与表达式

    大家好 今天和大家探讨的是单片机C语言中的运算符和表达式 前边介绍了C语言中的变量的表示 然而在计算的过程中只有变量是不能完成计算的 因此运算符和表达式为变量 包括常量 来做特定的操作 来实现数据的运算 因此运算符和表达式是C语言中不可或缺