历史上的今天
返回首页

历史上的今天

今天是:2025年07月08日(星期二)

正在发生

2021年07月08日 | 单片机C语言中的表达式语句及复合语句

2021-07-08 来源:eefocus

1.  表达式语句


在表达式的后边加一个分号“;”就构成了表达式语句 ,如:


a=++b*9;


x=8;y=7;


++k;


可以一行放一个表达式形成表达式语句,也可以一行放多个表达式形成表达式语句,这时每个表达式后面都必须带“;”号,另外,还可以仅由—个分号“;”占一行形成一个表达式语句,这种语句称为空语句。


空语句在程序设计中通常用于两种情况:


(1)在程序中为有关语句提供标号,用以标记程序执行的位置。例如采用下面的语句可以构成一个循环。


repeat:;


     :


     goto  repeat;


(2)在用while语句构成的循环语句后面加一个分号,形成一个不执行其它操作的空循环体。这种结构通常用于对某位进行判断,当不满足条件则等待,满足条件则执行。


【例】下面这段子程序用于读取8051单片机的串行口的数据,当没有接收到则等待,当接收到,接收数据后返回,返回值为接收的数据。


#include 


char  getchar()


{

char  c;


while(!RI);             //当接收中断标志位RI为0则等待,当接收中断标志位为1则;等待结束


c=SBUF;


RI=0;


return(c);


}


2.  复合语句


复合语句是由若干条语句组合而成的一种语句,在C51中,用一个大括号“{  }”将若干条语句括在一起就形成了一个复合语句,复合语句最后不需要以分号“;”结束,但它内部的各条语句仍需以分号“;”结束。复合语句的一般形式为:


{

局部变量定义;


语句l;


语句2;


}


复合语句在执行时,其中的各条单语句按顺序依次执行,整个复合语句在语法上等价于一条单语句,因此在C51中可以将复合语句视为一条单语句。通常复合语句出现在函数中,实际上,函数的执行部分(即函数体)就是一个复合语句;复合语句中的单语句一般是可执行语句,此外还可以是变量的定义语句(说明变量的数据类型)。在复合语句内部语句所定义的变量,称为该复合语句中的局部变量,它仅在当前这个复合语句中有效。利用复合语句将多条单语句组合在—起,以及在复合语句中进行局部变量定义是C51语言的一个重要特征。


推荐阅读

史海拾趣

问答坊 | AI 解惑

电池电量计和充电器芯片DS2770的原理及应用

1 主要特点 DS2770是Dallas Semiconductor公司生产的一款电池电量计和锂/镍化学电池充电器集成器件,它可以通过1-Wire接口与主系统进行通信,以读取电压、温度等测量信息,同时读写EEPROM存储器,因而可 ...…

查看全部问答>

在选择配置光端机的辅助功能时,需要考虑哪些因素?

光端机除提供视频信号的传输通道外,还能提供丰富的其它信号传输通道,如音频信号、异步数据信号、以太网信号、开关量信号和普通电话信号等。在选择配置光端机的这些辅助功能时,还需要考虑哪些因素呢?     光端机的音频接口一般都是线 ...…

查看全部问答>

间谍太阳镜

太阳镜只是它的外在,其实它重要的功效在于拍摄。信任这绝对是一款间谍式偷拍工具。 因为这款太眼镜的重要功效在于拍摄,所以它的摄像头很好的暗藏于镜框中,并且是抗划痕两极分化掀式镜头,而最要害的是想要按下快门,只需要按一下遥控就行了 ...…

查看全部问答>

请问plaform builder的功能?

我不是很理解: 1.平台的定制; 2.驱动程序的开发. 我很想知道, 对于OS开发, 比方说, 如果我要改其中的部分网络协议, 如IP协议中的一部分, 此时会用到platform builder吗? 如果有的话, 它起的是什么作用呢?…

查看全部问答>

请问,作手机上的嵌入式开发,看那本书比较好,小弟在此谢过,50分赠送

想看一些手机上的嵌入式开发, 请朋友们推荐以下,关于嵌入式,c,或者linux的书籍 我有java,.net等语言的经验,c只是学了谭浩强的c语言设计 小弟在此谢过…

查看全部问答>

MAX2的BANK3引脚能不能直接接上拉电阻拉到5V?

MAX2的BANK3引脚能不能直接接上拉电阻拉到5V?如果可以,需要特殊设置吗?我现在有2个脚,通过一上拉电阻拉到了5V,但是用万用表测,我没用这两个脚,但电阻另一端自动降到3.3V了,这是怎么回事?芯片烧了?…

查看全部问答>

51键盘扫描问题

我的学习板上是3*3的键盘,数码管位选是直接接P2口的,我的目的是按几数码管就显几,不按的时候就不显,但现在发现我按几是显示了几,但不按的时候数码管还是有显示 程序如下,看看问题出在哪,有位高手说要用定时动态扫描,能不能具体说下 #incl ...…

查看全部问答>

奇怪啊,难道是优化设计不合理?(STM8S)

环境:STM8S105,RLINK,swim接口,STVD,COSMIC。lReg定义为局部变量;GPIOG_PIN_0已配置为输入口(图中可以看到GPIO->DDR为0x02);为什么lReg的值为0呢?我试了下将断点设在红线处(597行)时,单步运行,lReg是0x01。。。全速运行却始终 ...…

查看全部问答>

相位差方波如何实现

我想实现如下波形 下载 (42 KB) 2010-11-21 09:37 看了版主的博文: http://blog.ednchina.com/STM32/352180/message.aspx 这个用中间对齐计数模式,只能实现2路相位差的PWM波 而http://blog.ednchina.com/STM32/ ...…

查看全部问答>

谁用过ADS7804。ADS7804问题

本帖最后由 dontium 于 2015-1-23 13:35 编辑 按照ADS7804手册接法,在没有模拟量输入的情况下,模拟输入引脚怎么会有2.07V的电压。 …

查看全部问答>