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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© cleader 高级黑马   /  2014-7-14 02:31  /  1836 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 cleader 于 2014-7-14 13:47 编辑

自加自减运算符分为“前加”“后加”“前减”“后减”.
int var1, var2 = 5, var3 = 6;
var1 = ++var2 + var3;
Console.WriteLine("{0}",var1);
看过基础视频的同学相信可以很轻松的答出这道题,var1的值为12.
看视频时,老师说如果是在表达式中有“后加”或“后减”运算符,就先参与表达式的运算然后再进行自加或自减运算。
但是如果出现下面这种情况,是不是有点晕菜呢。
int var1, var2 = 5, var3 = 6;
var1 = ++var2 + var3-- + var3;
Console.WriteLine("{0}",var1);

如果不运行的话这道题大家是否会觉的var1的值为18。但是最后运行的结果为17。
不是参与完表达式的运算,再进行自加自减吗?结果应该是18啊。
通过实验我发现,“后加”“后减”在表达式中,同一变量第二次出现的时候将使用“后加”“后减”执行后的结果。
请高手们多多指点!不吝赐教!

评分

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

查看全部评分

8 个回复

倒序浏览
1. 自增操作符++对变量的值加1,而自减操作符--,对变量的值减1;
2. 比如一个整数x的值是2,那么执行x++之后的值为3;
3.自增和自减操作符又有前缀后缀之分;
4. 对于前缀操作符号,遵循的原则是"先增减,后使用", 而后缀操作符则正好相反,是"先使用,后增减"。
回复 使用道具 举报
许庭洲 发表于 2014-7-14 06:13
1. 自增操作符++对变量的值加1,而自减操作符--,对变量的值减1;
2. 比如一个整数x的值是2,那么执行x++之 ...

:handshake 总结的很详细
回复 使用道具 举报
不错不错
回复 使用道具 举报
总结的好,自增自减理解的很到位
回复 使用道具 举报
本帖最后由 阿斌 于 2014-7-15 00:51 编辑

针对var1 = ++var2 + var3-- + var3;这条语句,我说说我的理解吧。
系统执行语句是按一定顺序来的,对于这条语句也不例外。借助下面的c#运算符优先级表,我们可以找出答案。


首先,在这条语句里,优先级最高的是后置“自减”运算符,也就是先计算var3--,结果是6,因为这是后自减的,所以在下一次使用时,才会变成5。
第二,是前置“自增”,也就是计算++var2,结果是5+1=6。
第三,是两个“+”双目运算符,从左往右结合,也就是6+5+6。(注意,中间的5就是var3--的最终的值)
最后,就是赋值运算符“=”了,将17这个结果赋值给var1。
至此,整条语句执行完了。
以上就是我的理解了,希望对楼主有帮助吧!

评分

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

查看全部评分

回复 使用道具 举报
阿斌 发表于 2014-7-15 00:49
针对var1 = ++var2 + var3-- + var3;这条语句,我说说我的理解吧。
系统执行语句是按一定顺序来的,对于这 ...

我还真不知道后缀比前缀的优先级高。谢谢了。又学到一点。
回复 使用道具 举报
许庭洲 发表于 2014-7-14 06:13
1. 自增操作符++对变量的值加1,而自减操作符--,对变量的值减1;
2. 比如一个整数x的值是2,那么执行x++之 ...

刚开始我还没仔细看,现在感觉第4条尤为重要。
回复 使用道具 举报
本帖最后由 c19t043 于 2014-7-15 21:15 编辑

后置,自加,自减,优先级高于+学习到!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马