黑马程序员技术交流社区

标题: 求详细的运算过程 [打印本页]

作者: nilaoyededie    时间: 2013-6-23 16:00
标题: 求详细的运算过程
本帖最后由 nilaoyededie 于 2013-6-24 09:34 编辑

int  x=5;
Console.writeLine((x++)+(x++)+(x++));
int y=(x++)+(x++)+(x++);
Console.writeLine(y);
作者: §風過無痕§    时间: 2013-6-23 16:11
先确定一下   楼主的代码是不是发错了   还是因为偶是新手看不懂呐???
要想了解一段代码的运行详细过程 可以利用调试工具   这样就可以随时观察到变量的变化了
作者: 王靖远    时间: 2013-6-23 16:28
看不懂是什么
作者: 道法乾坤110    时间: 2013-6-23 17:00
本帖最后由 道法乾坤110 于 2013-6-24 14:24 编辑

我想楼主的意思应该是,想了解这几个后++,怎么个运算顺序。
不是int i=5;而是应该int x=5吧,
应该是这样的
int x=5;
Console.writeLine((x++)+(x++)+(x++));
int y=(x++)+(x++)+(x++);
Console.writeLine(y);
楼主可能想知道Console.writeLine((x++)+(x++)+(x++));这里面的三个x++是一起算,还是先算第一个x++,再算第二个x++,再算第三个x++;
因为这两种想法,结果是不一样的。
具体过程是这个样子的,Console.writeLine((x++)+(x++)+(x++));里面的先算第一个x++,此时x=5,当第一个运算结束后,x=6,所以第二个x++就是6,当第二次运算完之后,x=7,所以第三个x++就是7,三者加起来就是18;
同理,执行完Console.writeLine((x++)+(x++)+(x++));之后,x就等于8了。
所以再当执行int y=(x++)+(x++)+(x++);的时候,x=8,所以跟接下俩就跟上面的算法一样,也就是int y=8+9+10;也就是27.

作者: nilaoyededie    时间: 2013-6-23 17:04
道法乾坤110 发表于 2013-6-23 17:00
我想楼主的意思应该是,想了解这几个后++,怎么个运算顺序。
不是int i=5;而是应该int x=5吧,
应该是这样 ...

书上看的,抄的时候习惯的原因抄错了
计算结果是
18
27

作者: nilaoyededie    时间: 2013-6-23 17:06
王靖远 发表于 2013-6-23 16:28
看不懂是什么

那些x++运算的先后
作者: 黄文超    时间: 2013-6-23 17:06
本帖最后由 黄文超 于 2013-6-23 17:21 编辑

我也同问{:soso_e127:}


作者: 王靖远    时间: 2013-6-23 17:34
18的结果比较好理解。27是要考虑优先级和栈内存的问题。
作者: 陈壹    时间: 2013-6-24 09:28
nilaoyededie 发表于 2013-6-23 17:04
书上看的,抄的时候习惯的原因抄错了
计算结果是
18

每个括号结束时,X++。
Console.writeLine((x++)+(x++)+(x++));
所以这里是5  6  7,运算结束时x==8,
同样int y=(x++)+(x++)+(x++);
8 9 10




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