黑马程序员技术交流社区

标题: 运算符优先级问题 [打印本页]

作者: 申延超    时间: 2012-7-19 17:27
标题: 运算符优先级问题
为什么 X++X-- 的优先级是最高的呀? 后加是等最后才自加一呀,不理解,求解释。
作者: 邓戊庚    时间: 2012-7-19 19:22
一样高,就像减法和加法.   ++X  比X++ 高!
作者: 吴立杰    时间: 2012-7-19 19:58
没有什么优先级的,你就这样理解就行了,电脑运算加载的顺序是从左到右的,也就是说--X和++x是先算加这运算然后再把值付给x的,而x++和x--是先有x的值,然后在计算后面的加加和减减运算的。
作者: 申延超    时间: 2012-7-19 22:16
谢谢楼上的回复,不过回复并不准确
作者: 京鱼龙    时间: 2012-7-19 22:41
X++和++X,X--和--X在单独运算时,是没有区别的。
虽然说++的优先级比较高,但要看是放在前面还是放在后面。

//通常在数学运算中都是先乘除在算加减。但在c语言和java中就不全是了,是从左往右算的

int x =1, y;              
y = ++x*2/4; //++在前的优先级的确非常高,乘除都要往后排,要先算出++x的值,然后再和后面的*2/4运算
System.out.print(y);   
------------------------------------------------------------------------------
int x =1, y;              
y = x++*2/4; //++在后,那它的优先级就不高了,要先算x*2/4的值,然后++再自身加1
System.out.print(y);   

X--和--X是和上面的举例一个性质的。
作者: 黄涛    时间: 2012-7-20 09:43
本帖最后由 黄涛 于 2012-7-20 09:52 编辑

楼上正解,++X的优先级比x++要高,一般在运算中,都是先算++x,没有则x++

比如++1*2=4,(先算++1=2,然后在*2=4)
1++*2=3;(先算1*2=2,在算++=3)


举个离子,如果我比你个头低,然后还要在和你比个头中赢,那我是不是先要踩个高跷,然后在和你比个头呢?(不恰当哈)从新说个;

比如A杯子中有1/5的水,b的杯子中有2/5的水,++a相当与先给A杯中再倒入1/5的水,然后把A和B杯中的水合并,就是4/5了;
                                                                     a++相当于先把A杯中的水和B杯中的水合并=3/5的水,然后在倒入1/5的水=4/5


这回明白了不,我发现,我真有讲师的天赋哈!
作者: 许庭洲    时间: 2012-7-20 09:51
1,单目运算符是不是优先级总是大于双目;
2,A=X++;//先把X的值赋值给A,然后在自增
2,A=X--;//先把X的值赋值给A,然后在自减
作者: 魏庆君    时间: 2012-7-20 10:08
感觉还是需要用到括号“()”功能,虽然已经了解了很多的知识,但是很多时候写出来的代码还需要调试,这不免给后来的检查带来了困难,视频中也是这么的建议的
作者: 申延超    时间: 2012-7-20 10:48
黄涛 发表于 2012-7-20 09:43
楼上正解,++X的优先级比x++要高,一般在运算中,都是先算++x,没有则x++

比如++1*2=4,(先算++1=2,然后在*2=4) ...

x++与x-- 优先级比++x和--x高,可以去看优先级顺序表
作者: 申延超    时间: 2012-7-20 10:58
许庭洲 发表于 2012-7-20 09:51
1,单目运算符是不是优先级总是大于双目;
2,A=X++;//先把X的值赋值给A,然后在自增
2,A=X--;//先把X的 ...

顶,一元运算符比二元运算符优先级高,可为啥在优先级表里X++和X--比++X,--X高一级?
作者: 申延超    时间: 2012-7-20 11:02
黄涛 发表于 2012-7-20 09:43
楼上正解,++X的优先级比x++要高,一般在运算中,都是先算++x,没有则x++

比如++1*2=4,(先算++1=2,然后在*2=4) ...

首先谢谢回复,不过建议再去看下优先级列表
作者: 申延超    时间: 2012-7-20 11:13
谢谢各位回复,已理解    首先一元运算符优先级高于二元运算符     在算术表达式中系统最先就对x++,x--和++x,--x进行了运算,只不过x++,x--表达式取的还是是原值,而++x,--x取的是新值
作者: 申延超    时间: 2012-7-20 20:40
魏庆君 发表于 2012-7-20 10:08
感觉还是需要用到括号“()”功能,虽然已经了解了很多的知识,但是很多时候写出来的代码还需要调试,这不 ...

是的,该用()的地方还是都给用上好,养成好习惯




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2