首页 理论教育 单片机运算符与表达式规则

单片机运算符与表达式规则

时间:2023-10-22 理论教育 版权反馈
【摘要】:运算即是对数据的加工,运算符用来表示数据的运算形式。只有一个操作数的运算符称为单目运算符,有两个操作数的运算符称为双目运算符,三个操作数的运算符称为三目运算符。一般而言,单目运算符优先级较高,赋值运算符优先级低。C语言多数运算符是左结合的,但单目运算符、三目运算符、赋值运算符具有右结合性。

单片机运算符与表达式规则

运算即是对数据的加工,运算符用来表示数据的运算形式。表达式是由运算符连接常量、变量、函数所组成的式子,每个表达式都有一个值和类型,表达式求值按运算符的优先级和结合性所规定的顺序进行。

C51继承了C语言的特点,因此也具有C语言的运算符。

C语言的运算符可分为以下几类:

(1)算术运算符 用于各类数值运算,包括加(+)、减(-)、乘(*)、除(/)、求余(或称模运算,%)、自增(++)、自减(--)共七种。当不同类型数值进行算术运算时,C语言会自动进行数据类型转换,为保证精度不降低,转换是按数据长度增加的方向进行的。

(2)关系运算符 用于比较运算,包括大于(>)、小于(<)、等于(==)、大于等于(>=)、小于等于(<=)和不等于(!=)六种。前四种关系运算符具有相同的优先级,后两种运算符的优先级一样,但前四种关系运算符的优先级高于后两种。

(3)逻辑运算符 用于逻辑运算,包括与(&&)、或(||)、非(!)三种。

(4)位操作运算符 包括位与(&)、位或(|)、位非(~)、位异或(^)、左移(978-7-111-46831-8-Chapter05-24.jpg)、右移978-7-111-46831-8-Chapter05-25.jpg)六种。移位运算符空位补0,溢出位舍去。

(5)赋值运算符 分为简单赋值(=)、复合算术赋值(+=,-=,*=,/=,%=)和复合位运算赋值(&=,|=,^=,978-7-111-46831-8-Chapter05-26.jpg=,978-7-111-46831-8-Chapter05-27.jpg=)三类共11种。赋值运算符具有右结合性。

(6)条件运算符 用于条件求值(?:),其一般形式为:表达式1?表达式2:表达式3

其求值规则为:如果表达式1的值为真,则以表达式2的值作为条件表达式的值,否则以表达式3的值作为整个条件表达式的值。

例如:max=(a>b)?a:b;

执行该语句的语义是:如a>b为真,则把a赋予max,否则把b赋予max。(www.xing528.com)

(7)逗号运算符 用于把若干表达式组合成一个表达式(,)。

(8)指针运算符 用于取内容(*)和取地址(&)两种运算。

(9)求字节数运算符 用于计算数据类型所占的字节数。

(10)其他运算符 有括号(),下标[],成员(->,.)等几种。

在使用运算符时,要注意以下几点:

1)按照运算符的功能,根据表达式的需要,选择正确的运算符。

2)运算符对应的操作数的个数及类型:各个运算符对应的操作数的个数不一定相同。只有一个操作数的运算符称为单目运算符,有两个操作数的运算符称为双目运算符,三个操作数的运算符称为三目运算符。另外,一个运算符是对特定的数据类型进行操作的,而且很多多目运算符要求各操作数类型一样。

3)运算的优先等级:当一个操作数两边有两个不同优先等级的运算符时,先执行优先等级高的运算符。一般而言,单目运算符优先级较高,赋值运算符优先级低。算术运算符优先级较高,关系和逻辑运算符优先级较低。

4)结合方向:当一个操作数两边有两个优先等级相同的运算符时,按其结合方向顺序处理。C语言多数运算符是左结合的,但单目运算符、三目运算符、赋值运算符具有右结合性。

5)运算结果的数据类型:当一个复杂的表达式含有不同类型数据进行运算时,特别要注意各个运算结果的数据类型。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈