A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 申延超 中级黑马   /  2012-7-19 17:27  /  3036 人查看  /  12 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

为什么 X++X-- 的优先级是最高的呀? 后加是等最后才自加一呀,不理解,求解释。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

12 个回复

倒序浏览
一样高,就像减法和加法.   ++X  比X++ 高!

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
没有什么优先级的,你就这样理解就行了,电脑运算加载的顺序是从左到右的,也就是说--X和++x是先算加这运算然后再把值付给x的,而x++和x--是先有x的值,然后在计算后面的加加和减减运算的。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
谢谢楼上的回复,不过回复并不准确
回复 使用道具 举报
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是和上面的举例一个性质的。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 黄涛 于 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


这回明白了不,我发现,我真有讲师的天赋哈!

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
许庭洲 黑马帝 2012-7-20 09:51:31
7#
1,单目运算符是不是优先级总是大于双目;
2,A=X++;//先把X的值赋值给A,然后在自增
2,A=X--;//先把X的值赋值给A,然后在自减

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
感觉还是需要用到括号“()”功能,虽然已经了解了很多的知识,但是很多时候写出来的代码还需要调试,这不免给后来的检查带来了困难,视频中也是这么的建议的

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
黄涛 发表于 2012-7-20 09:43
楼上正解,++X的优先级比x++要高,一般在运算中,都是先算++x,没有则x++

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

x++与x-- 优先级比++x和--x高,可以去看优先级顺序表
回复 使用道具 举报
许庭洲 发表于 2012-7-20 09:51
1,单目运算符是不是优先级总是大于双目;
2,A=X++;//先把X的值赋值给A,然后在自增
2,A=X--;//先把X的 ...

顶,一元运算符比二元运算符优先级高,可为啥在优先级表里X++和X--比++X,--X高一级?
回复 使用道具 举报
黄涛 发表于 2012-7-20 09:43
楼上正解,++X的优先级比x++要高,一般在运算中,都是先算++x,没有则x++

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

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

是的,该用()的地方还是都给用上好,养成好习惯
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马