• C++运算符优先级


    • 级别越高的运算符越先运算。
    运算符
    描述
    例子
    可重载性
    第一级别
    ::
    作用域解析符
    Class::age = 2;
    不可重载
    第二级别
    ()
    函数调用
    isdigit('1')
    可重载
    ()
    成员初始化
    c_tor(int x, int y) : _x(x), _y(y*10){};
    可重载
    []
    数组数据获取
    array[4] = 2;
    可重载
    ->
    指针型成员调用
    ptr->age = 34;
    可重载
    .
    对象型成员调用
    obj.age = 34;
    不可重载
    ++
    后自增运算符
    for( int i = 0; i < 10; i++ ) cout << i;
    可重载
    --
    后自减运算符
    for( int i = 10; i > 0; i-- ) cout << i;
    可重载
    const_cast
    特殊属性转换
    const_cast(type_from);
    不可重载
    dynamic_cast
    特殊属性转换
    dynamic_cast(type_from);
    不可重载
    static_cast
    特殊属性转换
    static_cast(type_from);
    不可重载
    reinterpret_cast
    特殊属性转换
    reinterpret_cast(type_from);
    不可重载
    typeid
    对象类型符
    cout « typeid(var).name();
    cout « typeid(type).name();
    不可重载
    第三级别(具有右结合性)
    !
    逻辑取反
    if( !done ) …
    可重载
    not
    ! 的另一种表达
    ~
    按位取反
    flags = ~flags;
    可重载
    compl
    ~的另一种表达
    ++
    预自增运算符
    for( i = 0; i < 10; ++i ) cout << i;
    可重载
    --
    预自减运算符
    for( i = 10; i > 0; --i ) cout << i;
    可重载
    -
    负号
    int i = -1;
    可重载
    +
    正号
    int i = +1;
    可重载
    *
    指针取值
    int data = *intPtr;
    可重载
    &
    值取指针
    int *intPtr = &data;
    可重载
    new
    动态元素内存分配
    long *pVar = new long;
    MyClass *ptr = new MyClass(args);
    可重载
    new []
    动态数组内存分配
    long *array = new long[n];
    可重载
    delete
    动态析构元素内存
    delete pVar;
    可重载
    delete []
    动态析构数组内存
    delete [] array;
    可重载
    (type)
    强制类型转换
    int i = (int) floatNum;
    可重载
    sizeof
    返回类型内存
    int size = sizeof floatNum;
    int size = sizeof(float);
    不可重载
    第四级别
    ->*
    类指针成员引用
    ptr->*var = 24;
    可重载
    .*
    类对象成员引用
    obj.*var = 24;
    不可重载
    第五级别
    *
    乘法
    int i = 2 * 4;
    可重载
    /
    除法
    float f = 10.0 / 3.0;
    可重载
    %
    取余数(模运算)
    int rem = 4 % 3;
    可重载
    第六级别
    +
    加法
    int i = 2 + 3;
    可重载
    -
    减法
    int i = 5 - 1;
    可重载
    第七级别
    <<
    位左移
    int flags = 33 << 1;
    可重载
    >>
    位右移
    int flags = 33 >> 1;
    可重载
    第八级别
    <
    小于
    if( i < 42 ) …
    可重载
    <=
    小于等于
    if( i <= 42 ) ...
    可重载
    >
    大于
    if( i > 42 ) …
    可重载
    >=
    大于等于
    if( i >= 42 ) ...
    可重载
    第九级别
    ==
    恒等于
    if( i == 42 ) ...
    可重载
    eq
    == 的另一种表达
    !=
    不等于
    if( i != 42 ) …
    可重载
    not_eq
    !=的另一种表达
    第十级别
    &
    位且运算
    flags = flags & 42;
    可重载
    bitand
    &的另一种表达
    第十一级别
    ^
    位异或运算
    flags = flags ^ 42;
    可重载
    xor
    ^的另一种表达
    第十二级别
    |
    位或运算
    flags = flags | 42;
    可重载
    bitor
    |的另一种表达
    第十三级别
    &&
    逻辑且运算
    if( conditionA && conditionB ) …
    可重载
    and
    &&的另一种表达
    第十四级别
    ||
    逻辑或运算
    if( conditionA || conditionB ) ...
    可重载
    or
    ||的另一种表达
    第十五级别(具有右结合性)
    ? :
    条件运算符
    int i = (a > b) ? a : b;
    不可重载
    第十六级别(具有右结合性)
    =
    赋值
    int a = b;
    可重载
    +=
    加赋值运算
    a += 3;
    可重载
    -=
    减赋值运算
    b -= 4;
    可重载
    *=
    乘赋值运算
    a *= 5;
    可重载
    /=
    除赋值运算
    a /= 2;
    可重载
    %=
    模赋值运算
    a %= 3;
    可重载
    &=
    位且赋值运算
    flags &= new_flags;
    可重载
    and_eq
    &= 的另一种表达
    ^=
    位异或赋值运算
    flags ^= new_flags;
    可重载
    xor_eq
    ^=的另一种表达
    |=
    位或赋值运算
    flags |= new_flags;
    可重载
    or_eq
    |=的另一种表达
    <<=
    位左移赋值运算
    flags <<= 2;
    可重载
    >>=
    位右移赋值运算
    flags >>= 2;
    可重载
    第十七级别
    throw
    异常抛出
    throw EClass(“Message”);
    不可重载
    第十八级别
    ,
    逗号分隔符
    for( i = 0, j = 0; i < 10; i++, j++ ) …
    可重载
  • 相关阅读:
    完美解决HTML5无法上传大文件方法
    完美解决jquery无法上传大文件方法
    Word图片上传控件+整合富文本
    ckeditor粘贴word文档图片的讨论
    python之理解super及MRO列表 ( 示例版 )
    JavaXXX成长直通车_汇总
    P75 验证码识别原理分析
    P74 复习
    P73 卷积神经网络识别手写数字
    P71 激活层与池化层
  • 原文地址:https://www.cnblogs.com/Z8875/p/13453568.html
Copyright © 2020-2023  润新知