• C++操作符的优先级


    转自:http://www.cnblogs.com/mx113/articles/1603972.html

    C++操作符的优先级

    操作符及其结合性

    功能

    用法



    L
    :: 
    :: 
    ::
    全局作用域  
    类作用域  
    名字空间作用域
    ::name 
    class::name 
    namespace::name






    -> 
    [] 
    () 
    () 
    成员选择  
    成员选择  
    下标  
    函数调用  
    类型构造  
    object.member 
    pointer->member 
    variable[expr] 
    name(expr_list) 
    type(expr_list)





    ++ 
    -- 
    typeid 
    typeid 
    显示强制类型转换  
    后自增操作  
    后自减操作  
    类型ID 
    运行时类型ID 
    类型转换  
    lvalue++ 
    lvalue-- 
    typeid(type) 
    typeid(expr) 
    cast_name<type>(expr)













    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
    ->* 
    .*
    指向成员操作的指针  
    指向成员操作的指针
    ptr->*ptr_to_member 
    obj.*ptr_to_member


    L


    %
    乘法  
    除法  
    求模(求余)
    expr * expr 
    expr / expr 
    expr % expr

    L

    -
    加法  
    减法
    expr + expr 
    expr - expr

    L
    <<  
    >>
    位左移  
    位右移
    expr << expr 
    expr >> expr



    L
    <  
    <= 
    >  
    >=
    小于  
    小于或等于  
    大于  
    大于或等于
    expr < expr 
    expr <= expr 
    expr > expr 
    expr >= expr

    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

    *=,/=,%= 
    +=,-= 
    <<=,>>= 
    &=,|=,^=
    赋值操作  
    复合赋值操作  

    Lvalue= expr 
    Lvalue+= expr 
    ……  

    R throw 抛出异常 Throw expr
    L , 逗号 Expr, expr

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

  • 相关阅读:
    java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
    Eclipse插件安装
    SQL 四种连接查询(内连接、左连接、右连接、全连接)
    数据库分页查询
    kafka shell命令
    you can't add a second 'create_time' expression specified as 'create_time : Document{{$lte=2020-07-31 00:00:00}}'.<br>Criteria already contains 'create_time : Document{{$gte=2020-07-01 00:00:00}}'
    nginx: [emerg] "proxy_pass" cannot have URI part in location given by regular expression, or inside named location, or inside "if" statement, or inside "limit_except" block
    Nginx配置中不同请求匹配不同请求
    FastDFS 磁盘空间不足(tracker_query_storage fail,error no : 28,error info : No space left on device)
    Oracle临时表空间不足,ORA-01652:无法通过128(在表空间TEMP中)扩展temp段
  • 原文地址:https://www.cnblogs.com/pamxy/p/2991458.html
Copyright © 2020-2023  润新知