您当前的位置:五五电子网电子知识单片机-工控设备51单片机C51程序设计中的运算符应用 正文
C51程序设计中的运算符应用

C51程序设计中的运算符应用

点击数:7345 次   录入时间:03-04 11:57:07   整理:http://www.55dianzi.com   51单片机

优先级排列:

1.优先级最高的:并不是真正意义上的运算符

   ()改变优先级的符号(括号)、GrouPINg operator

    [] 数组下标操作符 Array aCCess

    ()函数调用操作符 function access

     -> 结构成员选择操作符(我把它叫做“箭头”)member access from a pointer

     .    点 member access from a object

2.单目运算符:优先级最高,结合性从右到左

   !~(取反)logICal negation   ,bitwise complement

   ++ --(自增自减)pre-increace ,pre-decrease

   -(负号)+(正号) minus, plus

   *(取指针)derefenrence &(取地址)

(type)(强制类型转换)sizeof(取占用内存大小)

3.算术运算符:

    * / %(取模、求余)优先级高于 + -

    multipication, division, modulus, addition, subtraction

4.按位运算符

    <<   >>   右移,左移 bitwise shift left/right

5.关系运算符

    <   <=   > >=   comparision less-than/ less-than-or-equal-to/ greater than/ greater-than-or-equal-to

   优先级高于

    ==     !=           comparision equal-to/ not-equal-to

6. 逻辑运算符:

按位逻辑运算符优先级高于其他逻辑运算符

每个逻辑运算符的优先级都不同:

   & bitwise AND

    ^   bitwise exclusive OR

   |   bitwise inculsive(normal) OR

   &&    logical AND

   | |     logical OR

7. 三目运算符: 条件运算符Ternary conditional (if-then-else的简写)

    ?:结合性:从右向左

8. 赋值操作符 assignments及其复合运算符

    =    结合性:从右向左

    += -= *= /= %= &= ^= |= <<= >>=

9. 优先级最低的:逗号运算符(顺序执行操作符 Sequential evaluation operator)

    ,

     分割函数参数的逗号并非逗号运算符,声明里的变量列表之间的逗号也不是逗号运算符,只是起分割的作用。逗号运算符连接的是表达式。

需要注意的地方:

10. 使用括号能提高程序的易看性,降低程序的出错率。在不知道优先级的地方,尽量多使用括号。

11. 过多使用括号,是程序代码增加,简单和易用本就是一对矛盾。所以,尽可能多了解优先级知识。记忆规则是:

      优先级最高的和优先级最低的要记牢;

      单目运算符的优先级很高,仅次于部分符号。

      算术运算符的优先级很高,但次于单目运算符;

      移位运算符的优先级比算术运算符底,但是比关系运算符要高。

     关系运算符中,==与!=优先级低于其他关系优先级;

     所有的逻辑运算符的优先级都低于关系运算符。不同的逻辑运算符的优先级不同。

     三目运算符的优先级很低,但是高于赋值运算符;

      赋值操作符的优先级很低,仅高于逗号运算符。

12. 括号有时候带来的不一定是好事。比如g(x,y)与g((x,y)),函数参数的数量就是不同的。

13. 运算符的优先级与表达式的求值顺序

      c语言只有四个运算符(&& || ?: ,)存在规定的求值顺序。

       a && b 先对a求值,如果a为0(假),则继续对b求值;如果a为非0(真),则不对b求值;

       a || b     先对a求值,如果a为0(假),则不对b求值;如果a为非0(真),则对b求值;

        a ? b : c   先对a求值,根据a的值去求b或者c的值。也就是说b、c不同是被求值;

        a,b      先对左侧操作数a求值,然后a的值被丢弃,最对右侧操作数b求值




本文关键字:程序设计  51单片机单片机-工控设备 - 51单片机