运算符优先级顺序从高到低的顺序

C语言/运算符优先级
名称或含义
数组名[整型表达式]
(表达式)/函数名(形参表)
成员选择(对象)
对象.成员名
成员选择(指针)
对象指针-&成员名
负号运算符
单目运算符
强制类型转换
(数据类型)表达式
自增运算符
++变量名/变量名++
单目运算符
自减运算符
--变量名/变量名--
单目运算符
取值运算符
*指针表达式
单目运算符
取地址运算符
&左值表达式
单目运算符
逻辑非运算符
单目运算符
按位取反运算符
单目运算符
长度运算符
sizeof 表达式/sizeof(类型)
表达式/表达式
双目运算符
表达式*表达式
双目运算符
余数(取模)
整型表达式%整型表达式
双目运算符
表达式+表达式
双目运算符
表达式-表达式
双目运算符
表达式&&表达式
双目运算符
表达式&&表达式
双目运算符
表达式&表达式
双目运算符
表达式&=表达式
双目运算符
表达式&表达式
双目运算符
表达式&=表达式
双目运算符
表达式==表达式
双目运算符
表达式!= 表达式
双目运算符
整型表达式&整型表达式
双目运算符
整型表达式^整型表达式
双目运算符
整型表达式|整型表达式
双目运算符
表达式&&表达式
双目运算符
表达式||表达式
双目运算符
条件运算符
表达式1? 表达式2: 表达式3
三目运算符
赋值运算符
变量=表达式
变量/=表达式
变量*=表达式
取模后赋值
变量%=表达式
变量+=表达式
变量-=表达式
左移后赋值
变量&&=表达式
右移后赋值
变量&&=表达式
按位与后赋值
变量&=表达式
按位异或后赋值
变量^=表达式
按位或后赋值
变量|=表达式
逗号运算符
表达式,表达式,…
从左向右顺序运算
以下部分错误:
() [] -& . ++(后缀自增) --(后缀自减)
left to right
! ~ ++(前缀自增) --(前缀自减) + - * sizeof(type)
right to left
? : (条件运算)
right to left
= += -= *= /= %= &= ^= |= &&= &&=
left to right
接下来是算术运算符,*、/、%的优先级当然比+、-高了。移位运算符紧随其后。其次的关系运算符中,<
>=要比 == !=高一个级别,不大好理解。所有的逻辑操作符都具有不同的优先级(单目运算符除外,!和~)逻辑位操作符的"与"比"或"高,而"异或"则在它们之间。跟在其后的&&比||高。接下来的是条件运算符,赋值运算符及逗号运算符。在C语言中,只有4个运算符规定了运算方向,它们是&&、| |、条件运算符及逗号运算符。&&、| |都是先计算左边表达式的值,当左边表达式的值能确定整个表达式的值时,就不再计算右边表达式的值。如 a = 0 && &&运算符的左边位为0,则右边表达式b就不再判断。在条件运算符中。如a?b:c;先判断a的值,再根据a的值对b或c之中的一个进行求值。逗号表达式则规定从左到右依次进行求值。
C++/运算符优先级
Description
Overloadable
(no associativity)
Scope resolution operator
Class::age = 2;
Function call
isdigit('1')
Member initalization
c_tor(int x, int y) : _x(x), _y(y*10){};
Array access
array[4] = 2;
Member access from a pointer
ptr-&age = 34;
Member access from an object
obj.age = 34;
Post-increment
for( int i = 0; i & 10; i++ ) cout &&
Post-decrement
for( int i = 10; i & 0; i-- ) cout &&
const_cast
Special cast
const_cast&type_to&(type_from);
dynamic_cast
Special cast
dynamic_cast&type_to&(type_from);
static_cast
Special cast
static_cast&type_to&(type_from);
reinterpret_cast
Special cast
reinterpret_cast&type_to&(type_from);
Runtime type information
cout & typeid(var).name();
cout & typeid(type).name();
(right-to-left associativity)
Logical negation
if( !done ) …
Alternate spelling for !
Bitwise complement
Alternate spelling for ~
Pre-increment
for( i = 0; i & 10; ++i ) cout &&
Pre-decrement
for( i = 10; i & 0; --i ) cout &&
Unary minus
int i = -1;
Unary plus
int i = +1;
Dereference
int data = *intP
Address of
int *intPtr = &
Dynamic memory allocation
long *pVar =
MyClass *ptr = new MyClass(args);
Dynamic memory allocation of array
long *array = new long[n];
Deallocating the memory
Deallocating the memory of array
Cast to a given type
int i = (int) floatN
Return size of an object or type
int size = sizeof floatN
int size = sizeof(float);
Member pointer selector
ptr-&*var = 24;
Member object selector
obj.*var = 24;
Multiplication
int i = 2 * 4;
float f = 10.0 / 3.0;
int rem = 4 % 3;
int i = 2 + 3;
Subtraction
int i = 5 - 1;
Bitwise shift left
int flags = 33 && 1;
Bitwise shift right
int flags = 33 && 1;
Comparison less-than
if( i & 42 ) …
Comparison less-than-or-equal-to
if( i &= 42 ) ...
Comparison greater-than
if( i & 42 ) …
Comparison greater-than-or-equal-to
if( i &= 42 ) ...
Comparison equal-to
if( i == 42 ) ...
Alternate spelling for ==
Comparison not-equal-to
if( i != 42 ) …
Alternate spelling for !=
Bitwise AND
flags = flags & 42;
Alternate spelling for &
Bitwise exclusive OR (XOR)
flags = flags ^ 42;
Alternate spelling for ^
Bitwise inclusive (normal) OR
flags = flags | 42;
Alternate spelling for |
Logical AND
if( conditionA && conditionB ) …
Alternate spelling for &&
Logical OR
if( conditionA || conditionB ) ...
Alternate spelling for ||
(right-to-left associativity)
Ternary conditional (if-then-else)
int i = (a & b) ? a :
(right-to-left associativity)
Assignment operator
Increment and assign
Decrement and assign
Multiply and assign
Divide and assign
Modulo and assign
Bitwise AND and assign
flags &= new_
Alternate spelling for &=
Bitwise exclusive or (XOR) and assign
flags ^= new_
Alternate spelling for ^=
Bitwise normal OR and assign
flags |= new_
Alternate spelling for |=
Bitwise shift left and assign
flags &&= 2;
Bitwise shift right and assign
flags &&= 2;
throw exception
throw EClass(“Message”);
Sequential evaluation operator
for( i = 0, j = 0; i & 10; i++, j++ ) …
C#/运算符优先级
(x) x.y f(x) a[x] x++ x――new typeof sizeof checked unchecked
+ - ! ~ ++x ――x (T)x
乘法与除法
加法与减法
& & & = &=
位逻辑异或
= *= /= %= += -= &&= &&= &= ^= |=
&|&相关影像
互动百科的词条(含所附图片)系由网友上传,如果涉嫌侵权,请与客服联系,我们将按照法律之相关规定及时进行处理。未经许可,禁止商业网站等复制、抓取本站内容;合理使用者,请注明来源于。
登录后使用互动百科的服务,将会得到个性化的提示和帮助,还有机会和专业认证智愿者沟通。
此词条还可添加&
编辑次数:4次
参与编辑人数:4位
最近更新时间: 23:54:34
申请可获得以下专属权利:
贡献光荣榜Go语言运算符优先级 | Go运算符优先级顺序
Go语言运算符
Go语言运算符优先级,是描述在计算机运算计算表达式时执行运算的先后顺序。
先执行具有较高优先级的运算,然后执行较低优先级的运算。
例如,我们常说的先执行相乘和除,再执行加减运算。
Go 语言内置的运算符
算术运算符
关系运算符
逻辑运算符
赋值运算符
其他运算符
下面我们来对应Go语言各个运算符,算术、关系、逻辑、按位、赋值和其他运算符的详细讲解。
一、Go语言 算术运算符
下表显示了Go语言支持的所有算术运算符。假设变量 A 的值为 10,变量 B 的值为 20,则:
运算符描述示例+添加两个操作数A+B=30-从第一个操作数中减去第二个操作数A-B=10*将两个操作数相乘A*B=200/将分子除以分母B/A=2%模数运算符,以及整数除法的余数B%A=0++增加(递增)运算符,将整数值加一A++=11--相减(递减)运算符,将整数值减一A&=9
二、Go语言 关系运算符
下表显示了Go语言支持的所有关系运算符。假设变量 A 的值为 10,变量 B 的值为 20,则:
运算符描述示例==检查两个操作数的值是否相等,如果相等,则条件为真。(A==B)结果为假!=检查两个操作数的值是否相等,如果值不相等,则条件为真。(A!=B)结果为真&检查左操作数的值是否大于右操作数的值,如果是,则条件为真。(A&B)结果为假&检查左操作数的值是否小于右操作数的值,如果是,则条件为真。(A&B)结果为真&=检查左操作数的值是否大于或等于右操作数的值,如果是,则条件为真。(A&=B)结果为假&=检查左操作数的值是否小于或等于右操作数的值,如果是,则条件为真。(A&=B)结果为真
三、Go语言 逻辑运算符
下表显示了Go语言支持的所有逻辑运算符。假设变量A的值为1,变量B的值为0,则:
运算符描述示例&&逻辑AND运算符。如果两个操作数都不为零,则条件为真。(A&&B)结果为真||逻辑OR运算符。如果两个操作数中的任何一个非零,则条件变为真。(A||B)结果为真!逻辑非运算符。用于反转其操作数的逻辑状态。如果条件为真,则逻辑非运算符将为假。!(A&&B)结果为真
四、Go语言 位运算符
按位操作符对位进行操作,并执行逐位操作。 &,|和^的真值表如下:
pqp&qp|qp^q00000010111111010011
假设A = 60, B = 13; 现在的二进制格式,如下:
-----------------
Go语言支持的位运算符,如在下表中所列。 假设变量A=60,并且变量B=13,则:
运算符描述示例&如果两个操作数中都存在二进制AND运算符,则将其复制到结果。(A&B)结果为12,也就是|二进制OR运算符复制一个位,如果它存在于任一操作数。(A|B)结果为61,也就是^二进制XOR运算符复制位,如果它在一个操作数中设置,但不是在两个操作数中设置。(A^B)结果为49,也就是&&二进制左移位运算符。左操作数值向左移动由右操作数指定的位数。A&&2结果为240,也就是&&二进制右移运算符。左操作数值向右移动由右操作数指定位数。A&&2结果为15,也就是
五、Go语言 赋值运算符
Go语言支持以下赋值运算符:
运算符描述示例=简单赋值操作符,将值从右侧操作数分配给左侧操作数C=A+B,就是将A+B的值赋给C+=相加和赋值运算符,向左操作数添加右操作数,并将结果赋给左操作数C+=A相当于C=C+A-=减去和赋值运算符,从左操作数中减去右操作数,并将结果赋给左操作数C-=A相当于C=C-A*=乘法和赋值运算符,它将右操作数与左操作数相乘,并将结果赋给左操作数C*=A相当于C=C*A/=除法和赋值运算符,它用右操作数划分左操作数,并将结果分配给左操作数C/=A相当于C=C/A%=模数和赋值运算符,它使用两个操作数来取模,并将结果分配给左操作数C%=A相当于C=C%A&&=左移和赋值运算符C&&=2相当于C=C&&2&&=右移和赋值运算符C&&=2相当于C=C&&2&=按位和赋值运算符C&=2相当于C=C&2^=按位异或和赋值运算符C^=2相当于C=C^2|=按位包含OR和赋值运算符C|=2相当于C=C|2
六、Go语言 其他运算符
还有一些其他重要的运算符包括sizeof和? :,在Go语言中也是支持的。
运算符描述示例&返回变量的地址&a将给出变量a的实际地址。*指向变量的指针*a是指向变量a的指针。
Go语言中的运算符优先级
运算符优先级确定表达式中的分组。这会影响表达式的计算方式。某些运算符比其他运算符具有更高的优先级; 例如,乘法运算符比加法运算符有更高的优先级。
当同级别的运算符出现在同一个表达式中,从左到右的顺序计算,比如乘除一起,不管是乘在前面还是除在前面都是从左到右计算乘、除运算符。加减亦是如此。
例如:x = 7 + 3 * 2; 这里,计算结果x被分配13,而不是20,因为运算符 *具有比+有更的优先级,所以它首先乘以3 * 2,然后加上7。
这里,具有最高优先级的运算符放在表的顶部,具有最低优先级的运算符出现在底部。 在表达式中,将首先计算较高优先级运算符。
分类描述关联性后缀()[]-&.++ --左到右一元+ -!~++ --(type)*&sizeof右到左乘法*/ %左到右加法+ -左到右移位&&&&左到右关系&&=&&=左到右相等==!=左到右按位AND&左到右按位XOR^左到右按位OR|左到右逻辑AND&&左到右逻辑OR||左到右条件?:右到左分配=+=-=*=/= %=&&= &&= &= ^= |=右到左逗号,左到右
工具导航地图
JSON相关:
jQuery 相关:
常用对照表:-
前&&&&&&&&&&端:-
转&&&&&&&&&&换:-
单位换算:-
生活工具:-
格式化、压缩:-
运算符优先级:-
二&&维&&码:-
站长工具:-
月供计算:-
税费计算: -
还款工具:-
时间工具:
进制转换:
程序员福利:
归属网站:
与我们合作:
搜索的内容将在这里展现。 提示:&搜索快捷键:Ctrl + F
/ &关闭快捷键:Esc运算符优先级
运算符的优先级决定了表达式中运算执行的先后顺序,优先级高的运算符最先被执行。
下面是一个简单的例子:
3 + 4 * 5 // 计算结果为23
乘法运算符 ("*")比起加法运算符("+")有着更高的优先级,所以它会被最先执行。
结合性决定了拥有相同优先级的运算符的执行顺序。考虑下面这个表达式:
a OP b OP c
左结合(从左到右计算)相当于把左边的子表达式加上小括号(a OP b) OP c,类似的,右关联(从右到左计算)相当于a OP (b OP c)。赋值运算符是右关联的,所以你可以这么写:
a = b = 5;
结果 a 和 b 的值都会成为5。这是因为赋值运算符的返回结果就是赋值运算符右边的那个值,具体过程是:b被赋值为5,然后a也被赋值为 b=5 的返回值,也就是5。
下面的表将所有运算符按照优先级的不同从高到低排列。
(带参数列表)
new … ( … )
(无参数列表)
(运算符在后)
(运算符在后)
… instanceof …
… ? … : …
… &&&= …
这篇文章有帮助吗?
文档标签和贡献者
&此页面的贡献者:
&最后编辑者:
Sep 3, :49 PM
电子邮件地址
我接受 Mozilla 按照所述的方式处理我的信息。
谢谢!请检查您的收件箱以确认您的订阅。
如果您以前未确认过订阅 Mozilla 相关的新闻简报,您可能必须这样做。请检查您的收件箱或垃圾邮件箱,找到我们发给您的电子邮件。
隐藏新闻报注册> 问题详情
在Excel中各运算符的优先级由高到低顺序为()。A.算术运算符、比较运算符、文本运算符和引用运算符
悬赏:0&答案豆
提问人:匿名网友
发布时间:
在Excel中各运算符的优先级由高到低顺序为()。A.算术运算符、比较运算符、文本运算符和引用运算符B.文本运算符、算术运算符、比较运算符和引用运算符C.引用运算符、算术运算符、文本运算符、比较运算符D.比较运算符、算术运算符、引用运算符、文本运算符请帮忙给出正确答案和分析,谢谢!
为您推荐的考试题库
网友回答(共1条)展开
您可能感兴趣的试题
1f专用会计核算软件一般是(  )。A.单位购买的商品化软件B.单位自行开发或委托其他单位开发的会计核算软件C.适用于多数单位使用的会计核算软件D.适应多数行业使用的会计核算软件2(  )是指计算机系统中具有记忆能力的部件,用来存放程序和数据。A.运算器B.控制器C.存储器D.输入/输出设备3固定资产使用情况不包括(  )。A.经营性出租B.使用中C.不需用D.毁损4如果用预置小数位数的方法输入数据时,当设定小数是“2”时,输入56789表示(  )。A.567.89B.0056789C.5678900D.56789.00
我有更好的答案
请先输入下方的验证码查看最佳答案
图形验证:
验证码提交中……
找答案会员
享三项特权
找答案会员
享三项特权
找答案会员
享三项特权
选择支付方式:
支付宝付款
郑重提醒:支付后,系统自动为您完成注册
请使用微信扫码支付(元)
支付后,系统自动为您完成注册
遇到问题请联系在线客服QQ:
请您不要关闭此页面,支付完成后点击支付完成按钮
遇到问题请联系在线客服QQ:
恭喜您!升级VIP会员成功
常用邮箱:
用于找回密码
确认密码:

我要回帖

更多关于 c运算符优先级顺序 的文章

 

随机推荐