黑马程序员技术交流社区

标题: 关于自加自减运算符的理解 [打印本页]

作者: cleader    时间: 2014-7-14 02:31
标题: 关于自加自减运算符的理解
本帖最后由 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啊。
通过实验我发现,“后加”“后减”在表达式中,同一变量第二次出现的时候将使用“后加”“后减”执行后的结果。
请高手们多多指点!不吝赐教!


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

作者: cleader    时间: 2014-7-14 13:47
许庭洲 发表于 2014-7-14 06:13
1. 自增操作符++对变量的值加1,而自减操作符--,对变量的值减1;
2. 比如一个整数x的值是2,那么执行x++之 ...

:handshake 总结的很详细
作者: 乔相坤    时间: 2014-7-14 14:40
不错不错
作者: czwanglei    时间: 2014-7-14 20:14
总结的好,自增自减理解的很到位
作者: 阿斌    时间: 2014-7-15 00:49
本帖最后由 阿斌 于 2014-7-15 00:51 编辑

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


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

作者: cleader    时间: 2014-7-15 01:31
阿斌 发表于 2014-7-15 00:49
针对var1 = ++var2 + var3-- + var3;这条语句,我说说我的理解吧。
系统执行语句是按一定顺序来的,对于这 ...

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

刚开始我还没仔细看,现在感觉第4条尤为重要。
作者: c19t043    时间: 2014-7-15 20:58
本帖最后由 c19t043 于 2014-7-15 21:15 编辑

后置,自加,自减,优先级高于+学习到!!





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