单⽚机C语⾔C51的运算符及表达式
1.  赋值运算符
赋值运算符“=”,在C51中,它的功能是将⼀个数据的值赋给⼀个变量,如x=10。利⽤赋值运算符将⼀个变量与⼀个表达式连接起来的式⼦称为赋值表达式,在赋值表达式的后⾯加⼀个分号“;”就构成了赋值语句,⼀个赋值语句的格式如下:
变量=表达式;
执⾏时先计算出右边表达式的值,然后赋给左边的变量。例如:
x=8+9;  /*将8+9的值赋绐变量x*/
x=y=5;  /*将常数5同时赋给变量x和y*/
在C51中,允许在⼀个语句中同时给多个变量赋值,赋值顺序⾃右向左。
2.  算术运算符
C51中⽀持的算术运算符有:
+    加或取正值运算符
-    减或取负值运算符
*    乘运算符
/    除运算符
%    取余运算符
加、减、乘运算相对⽐较简单,⽽对于除运算,如相除的两个数为浮点数,则运算的结果也为浮点数,如相除的两个数为整数,则运算的结果也为整数,即为整除。如25.0/20.0结果为1.25,⽽25/20结果为1。
对于取余运算,则要求参加运算的两个数必须为整数,运算结果为它们的余数。例如:x=5%3,结果x的值为2。
3.  关系运算符
C51中有6种关系运算符:
>    ⼤于
<    ⼩于
>=  ⼤于等于
<=  ⼩于等于
= =  等于
!=  不等于
关系运算⽤于⽐较两个数的⼤⼩,⽤关系运算符将两个表达式连接起来形成的式⼦称为关系表达式。关系表达式通常⽤来作为判别条件构造分⽀或循环程序。关系表达式的⼀般形式如下:
表达式1  关系运算符  表达式2
关系运算的结果为逻辑量,成⽴为真(1),不成⽴为假(0)。其结果可以作为⼀个逻辑量参与逻辑运算。例如:5>3,结果为真(1),⽽10= =100,结果为假(0)。
注意:关系运算符等于“= =”是由两个“=”组成。
4.  逻辑运算符
C51有3种逻辑运算符:
||    逻辑或
&&    逻辑与
!    逻辑⾮
关系运算符⽤于反映两个表达式之间的⼤⼩关系,逻辑运算符则⽤于求条件式的逻辑值,⽤逻辑运算符将关系表达式或逻辑量连接起来的式⼦就是逻辑表达式。
逻辑与,格式:
条件式1 && 条件式2
当条件式1与条件式2都为真时结果为真(⾮0值),否则为假(0值)。
逻辑或,格式:
条件式1 || 条件式2
当条件式1与条件式2都为假时结果为假(0值),否则为真(⾮0值)。
逻辑⾮,格式:
!条件式
当条件式原来为真(⾮0值),逻辑⾮后结果为假(0值)。当条件式原来为假(0值),逻辑⾮后结果为真(⾮0值)。
c语言中逗号表达式的用法
例如:若a=8,b=3,c=0,则!a为假,a && b为真,b && c为假。
C51语⾔能对运算对象按位进⾏操作,它与汇编语⾔使⽤⼀样⽅便。位运算是按位对变量进⾏运算,但并不改变参与运算的变量的值。如果要求按位改变变量的值,则要利⽤相应的赋值运算。C51中位运算符只能对整数进⾏操作,不能对浮点数进⾏操作。C51中的位运算符有:
5.  位运算符
&    按位与
|    按位或
^    按位异或
~    按位取反
<<    左移
>>    右移
【例】设a=0x45=01010100B,b=0x3b=00111011B,则a&b、a|b、a^b、~a、a<<2、b>>2分别为多少?
a&b=00010000b=0x10。
a|b=01111111B=0x7f。
a^b=01101111B=0x6f。
~a=10101011B=0xab。
a<<2=01010000B=0x50。
b>>2=00001110B=0x0e。
6.  复合赋值运算符
C51语⾔中⽀持在赋值运算符“=”的前⾯加上其它运算符,组成复合赋值运算符。下⾯是C51中⽀持的复合赋值运算符
+=    加法赋值            -+    减法赋值
*=    乘法赋值            /=    除法赋值
%=    取模赋值          &=    逻辑与赋值
|=    逻辑或赋值          ^=    逻辑异或赋值
~=    逻辑⾮赋值        >>=    右移位赋值
<<=    左移位赋值
复合赋值运算的⼀般格式如下:
变量  复合运算赋值符  表达式
它的处理过程:先把变量与后⾯的表达式进⾏某种运算,然后将运算的结果赋给前⾯的变量。其实这是C51语⾔中简化程序的⼀种⽅法,⼤多数⼆⽬运算都可以⽤复合赋值运算符简化表⽰。例如:a+=6相当于a=a+6;a*=5相当于a=a*5;b&=0x55相当于b=b&0x55;x>>=2相当于x=x>>2。
7.  逗号运算符
在C51语⾔中,逗号“,”是⼀个特殊的运算符,可以⽤它将两个或两个以上的表达式连接起来,称为逗号表达式。逗号表达式的⼀般格式为:
表达式1,表达式2,……,表达式n
程序执⾏时对逗号表达式的处理:按从左⾄右的顺序依次计算出各个表达式的值,⽽整个逗号表达式的值是最右边的表达式(表达式n)的值。例如:x=(a=3,6*3)结果x的值为18。
8. 条件运算符
条件运算符“?:”是C51语⾔中唯⼀的⼀个三⽬运算符,它要求有三个运算对象,⽤它可以将三个表达式连接在⼀起构成⼀个条件表达式。条件表达式的⼀般格式为:
逻辑表达式?表达式1:表达式2
其功能是先计算逻辑表达式的值,当逻辑表达式的值为真(⾮0值)时,将计算的表达式1的值作为整个条件表达式的值;当逻辑表达式的值为假(0值)时,将计算的表达式2的值作为整个条件表达式的值。例如:条件表达式max=(a>b)?a:b的执⾏结果是将a和b中较⼤的数赋值给变量max。
9.  指针与地址运算符
指针是C51语⾔中的⼀个⼗分重要的概念,在C51中的数据类型中专门有⼀种指针类型。指针为变量的访问提供了另⼀种⽅式,变量的指针就是该变量的地址,还可以定义⼀个专门指向某个变量的地址的指针变量。
为了表⽰指针变量和它所指向的变量地址之间的关系,C51中提供了两个专门的运算符:
*    指针运算符
&    取地址运算符
指针运算符“*”放在指针变量前⾯,通过它实现访问以指针变量的内容为地址所指向的存储单元。例如:指针变量p中的地址为2000H,则*p所访问的是地址为2000H的存储单元,x=*p,实现把地址为2000H的存储单元的内容送给变量x。
取地址运算符“&”放在变量的前⾯,通过它取得变量的地址,变量的地址通常送给指针变量。例如:设变量x的内容为12H,地址为
2000H,则&x的值为2000H,如有⼀指针变量p,则通常⽤p=&x,实现将x变量的地址送给指针变量p,指针变量p指向变量x,以后可以通过*p访问变量x。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。