C++运算符优先级

来源:互联网 发布:传说 狐狸 知乎 编辑:程序博客网 时间:2024/05/22 05:13
  • 注:以下所有内容全部翻译至C++ Primer Plus Sixth Edition
  • 说明:C++运算符分为18个优先级组,第一组优先级最高,第二组次之,以此类推。如果两个运算符被用于操作同一个操作数,并且两个运算符优先级相同,则根据C++使用的结合性来决定哪个运算符结合的更为紧密。
  • 说明:同组内,优先级一样,排名不分先后

优先级组运算符结合性含义例子第1组:: 作用域解析运算符Class::function();第2组( 表达式 ) 分组(3 + 6.5 * x);()从函数调用function(x, y);()值构造,即type(expr)string("Hughen");[ ]数组下标array[1] * 5;->间接成员运算符ptr->num[1];.直接成员运算符my.name;const_cast专用类型转换(去掉类型中的常量符const)pb = const_cast<ptr*>(pa);dynamic_cast专用类型转换(完成类层次结构中的提升)void* pb = dynamic_cast<Class*>(pa)reinterpret_cast专用类型转换(转换成其它类型的指针)B* pb = reinterpret_cast<A*>(pa);static_cast专用类型转换int a = static_cast<double>(12.77);++自增加1,后缀i++ * 4;--自减减1,后缀i-- * 4;第3组!从逻辑非!open();~位非&~12;+一元加号(正号)+a;-一元减号(负号)-a + 7 / b;++自增加1,前缀++i * 4;--自减减1,前缀--i * 4;&取地址ptr = &a;*解除引用(间接值)i = *ptr;()类型转换,即(type)expr(int)12.77;sizeof以字节为单位,求长度sizeof(int);new动态分配内存int* p = new int;new [ ]动态分配数组int* p = new int[5];delete动态释放内存delete p;delete [ ]动态释放数组delete [ ] p;第4组.*从成员解除引用my.*ptr + 5;->*间接成员解除引用pa->*ptr + 5;第5组*从乘i * j + 9/除i / j + 9%模(余数)int a = 7 % 4第6组+从加int x = 12 + a;-减int x = 12 - a;第7组<<从左移int a = 5 << 2;>>右移int a = 5 >> 2;第8组<从小于bool sign = x < MAX;<=小于或等于bool sign = x <= MAX;>=大于或等于bool sign = x >= MAX;>大于bool sign = x > MAX;第9组==从等于bool sign = x == MAX;!=不等于bool sign = x != MAX;第10组&从按位与(按位AND)int a = 5 & 2;第11组^从按位异或(按位XOF)int a = 5 ^ 2;第12组|从按位或(按位OR)int a = 5 | 2;第13组&&从逻辑ANDbool sign = x && x != 0;第14组||从逻辑ORbool sign = x || x != 0;第15组? :从条件(三元条件运算符)int i = (x < MAX) ? x : MAX;第16组=从简单赋值int i = 0;*=乘并赋值x *= 5;/=除并赋值x /= 5;%=求模并赋值x %= 5;+=加并赋值x += 5;-=减并赋值x -= 5;&=按位AND并赋值x &= 5;^=按位XOR并赋值x ^= 5;|=按位OR并赋值x |= 5;<<=左移并赋值x <<= 2;>>=右移并赋值x >>= 2;第17组throw从抛出异常throw 404;第18组,从将两个表达式合并成一个int x = 0, y = 5 * MAX;




















































原创粉丝点击