zoukankan      html  css  js  c++  java
  • C++操作符的优先级


     

    C++操作符的优先级


    C++操作符的优先级

    操作符及其结合性

    功能

    用法

    L
    L
    L
    ::
    ::
    ::
    全局作用域
    类作用域
    名字空间作用域
    ::name
    class::name
    namespace::name
    L
    L
    L
    L
    L
    .
    ->
    []
    ()
    ()
    成员选择
    成员选择
    下标
    函数调用
    类型构造
    object.member
    pointer->member
    variable[expr]
    name(expr_list)
    type(expr_list)
    R
    R
    R
    R
    R
    ++
    --
    typeid
    typeid
    显示强制类型转换
    后自增操作
    后自减操作
    类型ID
    运行时类型ID
    类型转换
    lvalue++
    lvalue--
    typeid(type)
    typeid(expr)
    cast_name<type>(expr)
    R
    R
    R
    R
    R
    R
    R
    R
    R
    R
    R
    R
    R
    R
    sizeof
    sizeof
    ++
    --
    ~
    !
    -
    +
    *
    &
    ()
    new
    delete
    delete[]
    对象的大小
    类型的大小
    前自增操作
    前自减操作
    位求反
    逻辑非
    一元负号
    一元正号
    解引用
    取地址
    类型转换
    创建对象
    释放对象
    释放数组
    sizeof expr
    sizeof(type)
    ++lvalue
    --lvalue
    ~expr
    !expr
    -expr
    +expr
    *expr
    &expr
    (type)expr
    new type
    delete expr
    delete []expr
    L
    L
    ->*
    .*
    指向成员操作的指针
    指向成员操作的指针
    ptr->*ptr_to_member
    obj.*ptr_to_member
    L
    L
    L
    *
    /
    %
    乘法
    除法
    求模(求余)
    expr * expr
    expr / expr
    expr % expr
    L
    L
    +
    -
    加法
    减法
    expr + expr
    expr - expr
    L
    L
    <<
    >>
    位左移
    位右移
    expr << expr
    expr >> expr
    L
    L
    L
    L
    <
    <=
    >
    >=
    小于
    小于或等于
    大于
    大于或等于
    expr < expr
    expr <= expr
    expr > expr
    expr >= expr
    L
    R
    ==
    !=
    相等
    不等
    Expr == expr
    Expr != expr
    R & 位与 Expr & expr
    R ^ 位异或 Expr ^ expr
    R | 位或 Expr | expr
    R && 逻辑与 Expr && expr
    R || 逻辑或 Expr || expr
    R ?: 条件操作 Expr ? expr : expr
    R
    R
    R
    R
    R
    =
    *=,/=,%=
    +=,-=
    <<=,>>=
    &=,|=,^=
    赋值操作
    符合赋值操作

    Lvalue= expr
    Lvalue+= expr
    ……

    R throw 抛出异常 Throw expr
    L , 逗号 Expr, expr
    记忆方法:

    --摘自《C语言程序设计实用问答》     -吕凤翥     吕     涛著   
        问题:如何记住运算符的15种优先级和结合性?   
        解答:C语言中运算符种类比较繁多,优先级有15种,结合性有两种。   
        如何记忆两种结合性和15种优先级?下面讲述一种记忆方法。   
        结合性有两种,一种是自左至右,另一种是自右至左,大部分运算符的结合性是自左至右,只有单目运算符、三目运算符的赋值运算符的结合性自右至左。   
        优先级有15种。记忆方法如下:   
        记住一个最高的:构造类型的元素或成员以及小括号。   
        记住一个最低的:逗号运算符。   
        剩余的是一、二、三、赋值。   
        意思是单目、双目、三目和赋值运算符。   
        在诸多运算符中,又分为:   
        算术、关系、逻辑。   
        两种位操作运算符中,移位运算符在算术运算符后边,逻辑位运算符在逻辑运算符的前面。再细分如下:   
        算术运算符分     *,/,%高于+,-。   
        关系运算符中,》,》=,《,〈=高于==,!=。   
        逻辑运算符中,除了逻辑求反(!)是单目外,逻辑与(&&)高于逻辑或(||)。   
        逻辑位运算符中,除了逻辑按位求反(~)外,按位与(&)高于按位半加(^),高于按位或(|)。   
        这样就将15种优先级都记住了,再将记忆方法总结如下:   
        去掉一个最高的,去掉一个最低的,剩下的是一、二、三、赋值。双目运算符中,顺序为算术、关系和逻辑,移位和逻辑位插入其中。 

  • 相关阅读:
    Java基础——原码, 反码, 补码 详解
    为什么Java byte 类型的取值范围是-128~127
    JAVA 各种数值类型最大值和最小值 Int, short, char, long, float,&nbs
    JDK config
    为什么要设置Java环境变量(详解)
    什么是JAR包?
    如何用python将一个时间序列转化成有监督学习
    ImportError: numpy.core.multiarray failed to import
    搭建SDN网络——mininet
    回溯法解决最大团问题
  • 原文地址:https://www.cnblogs.com/snake-hand/p/3153207.html
Copyright © 2011-2022 走看看