++我还是理解不了

joniy 2013-03-07 01:46:53
int i = 5;
int j = (++i)+(++i)+(++i);
谁能告诉我最后的结果倒地应该是多少吗?

我看书上说的是24,我认为的是21,结果在VC++上是22。
int j = (++i)+(++i);我认为是13,结构在VC++上是14。
好像多了个1,咋解释呢?
...全文
127 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2013-03-07
  • 打赏
  • 举报
回复
引用 5 楼 xggllc 的回复:
int i = 5; int j = (++i)+(++i)+(++i); 这个我在 VC 上测试的也是 22 这~ 会让很多人纠结的, 实际开发上 ,很少会写这样的代码, 不过,工作面试的时候 ,老会有这类的题目,很纠结啊
建议用1楼的“标准答案”回答。
xggllc 2013-03-07
  • 打赏
  • 举报
回复
int i = 5; int j = (++i)+(++i)+(++i); 这个我在 VC 上测试的也是 22 这~ 会让很多人纠结的, 实际开发上 ,很少会写这样的代码, 不过,工作面试的时候 ,老会有这类的题目,很纠结啊
whizer 2013-03-07
  • 打赏
  • 举报
回复
除了考试,实际代码很少写成这样。 实际项目要写成结果唯一性以及自己可以调试的代码。
bravery36 2013-03-07
  • 打赏
  • 举报
回复
请看置顶贴。
linzhengqun 2013-03-07
  • 打赏
  • 举报
回复
在CodeBlocks下结果是21,13 你的VC是什么版本
赵4老师 2013-03-07
  • 打赏
  • 举报
回复
VC调试时按Alt+8、Alt+7、Alt+6和Alt+5,打开汇编窗口、堆栈窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应堆栈、内存和寄存器变化,这样过一遍不就啥都明白了吗。 对VC来说,所谓‘调试时’就是编译连接通过以后,按F10或F11键单步执行一步以后的时候,或者在某行按F9设了断点后按F5执行停在该断点处的时候。 (Turbo C或Borland C用Turbo Debugger调试,Linux或Unix下用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。) 有那么些人喜欢或者适合用“先具体再抽象”的方法学习和理解复杂事物; 而另一些人喜欢或者适合用“先抽象再具体”的方法学习和理解复杂事物。 而我本人属前者。 提醒: “学习用汇编语言写程序” 和 “VC调试(TC或BC用TD调试)时按Alt+8、Alt+7、Alt+6和Alt+5,打开汇编窗口、堆栈窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应堆栈、内存和寄存器变化,这样过一遍不就啥都明白了吗。 (Linux或Unix下可以在用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。)” 不是一回事! 不要迷信书、考题、老师、回帖; 要迷信CPU、编译器、调试器、运行结果。 并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。 任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实! 有人说一套做一套,你相信他说的还是相信他做的? 其实严格来说这个世界上古往今来所有人都是说一套做一套,不是吗? 不要写连自己也预测不了结果的代码!

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧