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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Always. 中级黑马   /  2013-9-20 23:53  /  6457 人查看  /  22 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 Always. 于 2013-9-21 16:15 编辑

像我们所说的一元运算符有:++、--等,而++有前加(++age)和后加(age++)之分。
前加:
int age=18;
int sum=age++-10;
Console.WriteLine("sum={0},age={1}",sum,age);
此时得到的值为:sum=8,age=19(先计算-得到到sum的值,再进行++)

后加:
int age=18;
int sum=++age-10;
Console.WriteLine("sum={0},age={1}",sum,age);

此时得到的值为:sum=9,age=19(先++,再进行-才得到sum的值)

而在视频里,老师说在C#中,一元的优先级大于二元的优先级。也就是先进行前加前减再进行加减乘除,而后加后减的优先级又大于前加前减,
那为什么在sum=age++-10这个表达式中是先进行二元运算符的运算然后再进行一元的呢 ?
这个问题困扰了我挺久,望各位学长能帮我解答一下!

评分

参与人数 1技术分 +1 收起 理由
haxyek + 1

查看全部评分

22 个回复

倒序浏览
许庭洲 发表于 2013-9-21 07:45
1.int age=18; int sum=++age-10, 右边的表达式分为两个部分,表达式一为++age和已经有结果的表达式二数值1 ...

恩恩,学长说的是这样的,能够明白,但是我的问题还是木有解决啊在sum=age++-10 这个表达式中,是有一元运算符也有二元运算符, 而一元的优先级大于二元的优先级 ,理应先算一元的再算二元的,但是因为是后加,所以先算了二元的。是不是跟我们所说的“当一元的优先级大于二元的优先级的时候,先算优先级高的” 有点自相矛盾 ?




回复 使用道具 举报
我知道age++和++age的区别。嘻嘻
回复 使用道具 举报
大虾挂了 发表于 2013-9-21 11:05
饿。。。。
你的想法好有趣,当时这里我没想那么多,就当就把后加永远当做最后进行运算的就行,你要硬说 ...

不是那样,后加是一元运算符。一元运算符比二元运算符的优先级要高
回复 使用道具 举报
haxyek 发表于 2013-9-21 12:25
这个跟优先级没关系,这个是计算时候的次序。我们知道括弧的优先级最高,
那么看
int sum = (age++) - 10 ...

怎么会没关系?运算法则不就是根究优先级来的么 ?
可不可以理解为那是一种特殊情况 ?
不然 我会一直卡在那里
回复 使用道具 举报
黑色海 发表于 2013-9-21 15:35
先明白,优先级就是指参与运算时的运算顺序,谁先运算,谁的优先级就高
a++先运算后自增操作数,说明它的优 ...

OK,I see,Thanks a lot
回复 使用道具 举报
宋清飞 发表于 2013-9-23 23:25
楼主的疑问应该是为什么在“sum=age++-10”中,二元运算符“—”会先于一元运算符“age++”进行运算 ...

想了会,还是不明白 ?不知道你所说的一元符的运算规则是  “先进行二元运算,然后age加1”,二元符的运算规则是  ”等待age++先执行,再将age++和10相减去“。在这里是何意 ?
回复 使用道具 举报
七里香 发表于 2013-9-24 14:55
不过如果实在搞不清楚优先级该怎么办呢?加括号一切都搞定了

每个回复我都看了一次,只有这个我好像能够接受。比较能够想通。
以后多教教我。嘻嘻
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马