• 运算符和结合性(转)


     

    优先级

    运算符

    含义

    要求运算对象的个数

    结合方法

    1

      ( )

      [ ]

      →

      ·

    圆括号

    下标运算标

    指向结构体成员运算符

    结构体成员运算符

    自左至右

    2

       !

       ~

       ++

       --

       -

     (类型)

       *

       &

      sizeof

    逻辑非运算符

    按位取反运算符

    自增运算符

    自减运算符

    负号运算符

    类型转换运算符

    指针运算符

    地址与运算符

    长度运算符

             1

        (单目运算符)

    自右至左

    3

       *

       /

       %

    乘法运算符

    除法运算符

    求余运算符

    2

        (双目运算符)

    自左至右

    4

       +

       -

    加法运算符

    减法运算符

    2

        (双目运算符)

    自左至右

    5

      <<

      >>

    左移运算符

    右移运算符

    2

        (双目运算符)

    自左至右

    6

    <<=︺>>=

    关系运算符

    2

        (双目运算符)

    自左至右

    7

      ==

      !=

    等于运算符

    不等于运算符

    2

        (双目运算符)

    自左至右

    8

       &

    按位与运算符

    2

        (双目运算符)

    自左至右

    9

       ^

    按位异或运算符

    2

        (双目运算符)

    自左至右

    10

       ︱

    按位或运算符

    2

        (双目运算符)

    自左至右

    11

      &&

    逻辑与运算符

    2

        (双目运算符)

    自左至右

    12

       ‖

    逻辑运算符

    2

        (双目运算符)

    自左至右

    13

      ?:

    条件运算符

    2

        (双目运算符)

    自左至右

    14

    =+=-=*=

    /=%=>>=<<=

     &=^=︱=

    赋值运算符

              2

    自右至左

    15

       ,

    逗号运算符(顺序求职运算符)

    自左至右

     

    说明:

    (1)同一优先级的运算符优先级别相同,运算次序由结合方向决定。例如,*与/具有相同的优先级别,其结合方向为自左至右,因此,3*5/4的运算次序是先乘后除。一和++为同一优先级,结合方向为自右至左,因此-i++相当于一(i++)。

    (2)不同的运算符要求有不同的运算对象个数,如十(加)和-(减)为双目运算符,要求在运算符两侧各有一个运算对象(如3+5、8-3等)。而++和-(负号)运算符是一元运算符,只能在运算符的一侧出现一个运算对象(如-a、i++、--i、(float)i、sizeof(int)、*p等)。条件运算符是C语言中唯一的一个三目运算符,如x?a:b。

    (3)从上述表中可以大致归纳出各类运算符的优先级:

    初等运算符(  )[  ]→ •

    单目运算符

    算述运算符(先乘除,后加减)

    关系运算符

    逻辑运算符(不包括!)

    条件运算符

    赋值运算符

    逗号运算符

    以上的优先级别由上到下递减。初等运算符优先级最高,逗号运算符优先级最低。位运算符的优先级比较分散。为了容易记忆,使用位运算符时可加圆弧号。

  • 相关阅读:
    或许因为缺少默认route配置而导致的的ping超慢,甚至timeout
    zabbix没有frontends目录
    jenkins自动部署到tomcat报错:ERROR: Publisher hudson.plugins.deploy.DeployPublisher aborted due to exception
    tomcat访问manager报404;server.xml中配置了Context path
    配置使用;yum安装slatstack的master,minion<at>centos6_x86_64
    jenkins报错;自定义工作目录;
    深入剖析Java中的装箱和拆箱
    探秘Java中的String、StringBuilder以及StringBuffer
    Java异常处理和设计
    JVM的内存区域划分
  • 原文地址:https://www.cnblogs.com/10jschen/p/2629610.html
Copyright © 2020-2023  润新知