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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

int number = 100;           
int num = number-- + number++;
Console.WriteLine(num);
Console.ReadKey();

我觉得运算过后num的值为200,
可以怎么运算都是199...
程序也没问题,卡着睡不着了。。。

评分

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

查看全部评分

9 个回复

倒序浏览
我记得书中是这样描述后++(--)两个运算符的:先参与运算再自增(自减)。
你想不明白是因为你认为自增(自减)是在一条语句(分号)执行完成后再执行的,其实并不是,正如书中所说,是先参与运算!
我是这样分析的,加号左边参与运算后变成了99,而之前记录下来了100将与右边的数再做加法操作,所以结果为199。

评分

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

查看全部评分

回复 使用道具 举报
number-- + number++
        number--    后的值 99,      
                99+99++           198+1                      199

评分

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

查看全部评分

回复 使用道具 举报
刚开始看的时候我也晕了~结果查MSDN,搞了大半个小时才有点头绪。
我是这样想的: number-- 和 number++的优先级一样,所以先运算number--,这时number自减1,为99,然后运算number++,因为前面number--使得number的值变成99,所以这次number++的运算结果是99+1,所以sum=199
例如下面这个代码:
            int number = 100;
            Console.WriteLine(number--);
            Console.WriteLine(number++);
            Console.ReadKey();

评分

参与人数 1技术分 +2 收起 理由
郑文 + 2

查看全部评分

回复 使用道具 举报
呵呵,有点绕人啊,number-- 和number++不是同时进行的,number-- 的确是100,但是之后number自减,其值已经是99了,这时候再执行number++的话,number++的值也是99,完了自加number重新变成其实真实的执行是num = number-- + number++=100+99=199了,确实一开始我也有点小晕,挺有意思的。
碰到这种情况,建议调试下

评分

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

查看全部评分

回复 使用道具 举报
199啊,number-- +number++中number--后number的值就为99了,然后number++之后number为100了 加起来就是199
其实等于int num1= number-1;  这时候num1=99;
number++等于int num2=num1+1;这时候num2=100;
最后相加就为199

评分

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

查看全部评分

回复 使用道具 举报
蔡嘉 中级黑马 2012-9-28 14:28:20
7#
从良好的编程习惯角度出发来看这一问题:如果程序员都这样写程序,会让程序变得不易读懂,造成很多困扰,使得团队纠缠在这样的小问题上。所以,忽然想起杨中科老师的讲课,能加括号就加括号,通俗易读懂。

评分

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

查看全部评分

回复 使用道具 举报
这是我做的笔记。希望对你有帮助

评分

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

查看全部评分

回复 使用道具 举报
遇到复杂的运算可以把他们拆开来算,这样有助于理解.
回复 使用道具 举报
我只说一句,一元运算符比二元运算符的优先级要高。。。
你怎么会晕。。。先减后加等于没加没减么,后面那个值和初始值一样,前面的自减1了,运行出来的当然是199了。

评分

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

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马