STC单片机C语言程序设计 第10章 STC单片机C语言运算符

STC单片机C语言程序设计 第10章 STC单片机C语言运算符

ID:43485924

大小:994.69 KB

页数:61页

时间:2019-10-08

STC单片机C语言程序设计 第10章 STC单片机C语言运算符_第1页
STC单片机C语言程序设计 第10章 STC单片机C语言运算符_第2页
STC单片机C语言程序设计 第10章 STC单片机C语言运算符_第3页
STC单片机C语言程序设计 第10章 STC单片机C语言运算符_第4页
STC单片机C语言程序设计 第10章 STC单片机C语言运算符_第5页
资源描述:

《STC单片机C语言程序设计 第10章 STC单片机C语言运算符》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、STC单片机C语言运算符主讲:何宾Email:hebin@mail.buct.edu.cn2016.03STC单片机C语言运算符在C语言中,提供了丰富的运算符用于实现复杂的运算功能,包括:算术运算、逻辑运算及逻辑判断等。本章将详细的介绍C语言中所提供的赋值运算符、算术运算符、递增和递减运算符、关系运算符、逻辑运算符、位运算符、符合赋值运算符、逗号运算符、条件运算符、强制类型转换符以及sizeof运算符。通过本章内容的学习,掌握C语言运算符的表示方法及所实现的功能,灵活高效地运用这些运算符实现对

2、数据进行处理。C语言运算符分类在C语言中,提供了丰富的运算符用于对数据的处理。通过运算符和数据的有效合理搭配,就构成了可以完成所要求运算功能的表达式。对于C语言的运算符来说,可以从下面的角度进行分类:根据所实现的功能,C语言中的运算符可以分为赋值运算符、算术运算符、递增和递减运算符、关系运算符、逻辑运算符、位运算符、符合赋值运算符、逗号运算符、条件运算符、指针和地址运算符、强制类型转换运算符和sizeof等运算符。C语言运算符分类根据参与运算数据的个数,C语言中的运算符可以分为单目运算符、双

3、目运算符和三目运算符。对于单目运算符,只有一个操作数。典型地,包括:递增递减运算符、取地址运算符、指针运算符、取正数运算符,取负数运算符、按位取反运算符和sizeof运算符。对于双目操作符,有两个操作数。典型地,包括加法、减法、乘法和除法运算符等。对于三目操作符,有三个操作数。典型地,条件运算符。C语言运算符优先级所谓的运算符优先级是指,在一个运算表达式中,执行运算的先后顺序。在C语言中,共分了15级优先级,最高优先级称为第1级,最低优先级称为第15级,也就是所数字越高优先级越低。注:表中

4、的一些其它运算符在后续章节中将详细介绍。赋值运算符在C语言中,赋值操作使用“=”号实现,“=”称为赋值运算符,赋值语句的格式为:变量=表达式;先计算由表达式所得到的值,然后在将该值分配给变量。【例10-1】不同类型之间赋值操作的例子代码清单10-1main.c文件intmain(){volatileunsignedinta;//定义无符号的整型变量a,带有volatile属性volatileintb=-2345;//定义带符号的整型变量,初值为-2345a=b;//将b的值赋给a,return0;

5、}赋值运算符读者可以进入到本书所提供资料的stc_program_example例子10-1目录下,在KeilμVision5集成开发环境下打开该设计,并进入调试器模式,使用单步运行。根据前面说提到的,由于b是有符号的变量,而a是无符号的变量,当把有符号变量的数赋值给无符号变量a的时候,会有什么结果?下面对该段代码进行分析。在Disassembly窗口中,查看该段C语言代码的反汇编代码。赋值运算符代码清单10-2main.c的反汇编代码2:{3:volatileunsignedinta;4

6、:volatileintb=-2345;C:0x0003750AF6MOV0x0A,#0xF6C:0x0006750BD7MOV0x0B,#0xD75:a=b;C:0x0009850A08MOV0x08,0x0AC:0x000C850B09MOV0x09,0x0B6:return0;赋值运算符C:0x000FE4CLRAC:0x0010FEMOVR6,AC:0x0011FFMOVR7,A7:}从代码很清楚的可以知道下面的事实,即:将立即数0xF6D7保存到8051单片机片内基本数据RAM地址为

7、0x0A和0x0B的空间,该数字是变量b的值-2345的二进制补码表示。b=a的操作就是,将8051单片机片内基本数据RAM地址为0x0A和0x0B的内容保存到8051片内基本数据RAM地址为0x08和0x09的位置,也就是变量a的内容。赋值运算符但是声明a是无符号的整数,因此就将8051片内基本数据RAM地址为0x08和0x09位置的内容当作无符号处理即0xF6D7的无符号数表示为63191。因此a的值最终表示为63191,b的值最终表示为-2345。注:虽然这两个变量a和b的值在805

8、1片内基本数据RAM内饰完全一样的,但是由于在声明变量a和b的时候,其类型是不同的,因此最终导致对0xF6D7的理解完全不同。通过这个分析过程清楚地知道,要想学好C语言是需要了解一些CPU的细节的,否则C语言的这些语法是无法彻底理解清楚的。赋值运算符从上面的过程可以清楚地看出来赋值的过程:赋值过程是从右到左,即先等到“=”号右侧表达式的值;然后,在将右侧表达式的值赋值给“=”号左侧的变量。在赋值过程中,如果“=”号左右两侧的数据类型不相同的时候,将右侧表达式的值自动的转换到

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。