作者RJking (RJ-king)
看板TransCSI
标题Re: [问题] i值结果
时间Wed Apr 1 02:03:53 2009
※ 引述《walks (蹦蹦跳跳)》之铭言:
: Write down the value of i after the following lines of C code were executed:
: 1.: i = 1 ;
: 2.: ++i+=i++;
: 这边观念不太清楚 能详细说明一下吗
: 谢谢^^
老实说这个答案好像不同compiler会不一样,因为对语句解释的不同
大概讲一下RJ牌人脑compiler的答案跟流程
1.: i = 1 ; //将i指定为1
2.: ++i+=i++ ; //先做++i(i变成2),然後做i+=i(i指定成i+i,i变成4)
//然後做i++(i变成5)
所以i的值最後是5
还有就是VS2005跟VS2008跟DEV C++会直接跟你说"++i+=i++"这行语法错误
如果题目直接注明一定有答案或是你怕老师认为一定会有答案,你可以考虑用我的答案
不然就直接说"++i+=i++"这行错误:缺少";"吧...
我对第二行的解释只是单纯基於运算子优先顺序而已...
事实上这样写很多方面是错误的,千万不要写出这种程式
会这样写的只有自以为这样出很有深度的老师...
这可以算是Undefined behavior吧...
http://en.wikipedia.org/wiki/Undefined_behavior
http://blog.ez2learn.com/2008/09/27/evil-undefined-behavior/
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 122.117.92.133