黑马程序员技术交流社区
标题:
简单的一个运算题,绕晕了,没整明白,求助
[打印本页]
作者:
瞿正峰
时间:
2012-9-14 23:35
标题:
简单的一个运算题,绕晕了,没整明白,求助
int number = 100;
int num = number-- + number++;
Console.WriteLine(num);
Console.ReadKey();
我觉得运算过后num的值为200,
可以怎么运算都是199...
程序也没问题,卡着睡不着了。。。
作者:
iamheima
时间:
2012-9-15 00:52
我记得书中是这样描述后++(--)两个运算符的:先参与运算再自增(自减)。
你想不明白是因为你认为自增(自减)是在一条语句(分号)执行完成后再执行的,其实并不是,正如书中所说,是先参与运算!
我是这样分析的,加号左边参与运算后变成了99,而之前记录下来了100将与右边的数再做加法操作,所以结果为199。
作者:
杨千里
时间:
2012-9-15 01:30
number-- + number++
number-- 后的值 99,
99+99++ 198+1 199
作者:
廖创发
时间:
2012-9-15 01:39
刚开始看的时候我也晕了~结果查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();
作者:
刘欢(安阳)
时间:
2012-9-27 23:01
呵呵,有点绕人啊,number-- 和number++不是同时进行的,number-- 的确是100,但是之后number自减,其值已经是99了,这时候再执行number++的话,number++的值也是99,完了自加number重新变成其实真实的执行是num = number-- + number++=100+99=199了,确实一开始我也有点小晕,挺有意思的。
碰到这种情况,建议调试下
作者:
陈顺亮
时间:
2012-9-27 23:41
199啊,number-- +number++中number--后number的值就为99了,然后number++之后number为100了 加起来就是199
其实等于int num1= number-1; 这时候num1=99;
number++等于int num2=num1+1;这时候num2=100;
最后相加就为199
作者:
蔡嘉
时间:
2012-9-28 14:28
从良好的编程习惯角度出发来看这一问题:如果程序员都这样写程序,会让程序变得不易读懂,造成很多困扰,使得团队纠缠在这样的小问题上。所以,忽然想起杨中科老师的讲课,能加括号就加括号,通俗易读懂。
作者:
郑本川
时间:
2012-9-28 19:48
R[]JNUE6}W`OX8(WI_@GZK4.jpg
(58.03 KB, 下载次数: 130)
下载附件
2012-9-28 19:47 上传
这是我做的笔记。希望对你有帮助
作者:
刘进朝
时间:
2012-9-29 10:48
遇到复杂的运算可以把他们拆开来算,这样有助于理解.
作者:
邓艳秋
时间:
2012-10-2 09:59
我只说一句,一元运算符比二元运算符的优先级要高。。。
你怎么会晕。。。先减后加等于没加没减么,后面那个值和初始值一样,前面的自减1了,运行出来的当然是199了。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2