【问题标题】:Cannot figure the output [duplicate]无法计算输出[重复]
【发布时间】:2012-11-01 12:55:23
【问题描述】:

可能重复:
How does Duff’s device work?

int n=5;
int q=(n+3)/4;
switch(n%4)
{ 
  case 0:do{ n++;
  case 3:n++;
  case 2:n++;
  case 1:n++;}while(--q>0);
}
 cout<<n;

n 的值是多少? 这只是代码 sn-p,给出的答案是 10。看不到怎么做?

【问题讨论】:

  • 使其编译并使用调试器单步调试并观察变量变化
  • 案例标签只是标签,switch 只是一个goto。也许这有帮助。
  • 一步一步来。进入开关前nq多少钱?执行到什么情况下?之后会发生什么?
  • 我认为n最后应该是12,而不是10。
  • 嗯,我在这里学到了一些东西,达夫的装置。在我所有的 c 编程年之后,我从来没有写过像这样令人费解和不可读的东西。

标签: c++ for-loop do-while


【解决方案1】:

n 的最终值为 10。在开关之前n 为 5,q 为 2。开关转到案例 1。n 在第一次迭代中增加 1 次,在第一次迭代中增加 4 次第二。最后n 的值是 5+1+4 = 10。

【讨论】:

  • 嗯,是的,现在代码已经编辑好了,n 确实是 10。
猜你喜欢
  • 2019-03-16
  • 2016-01-09
  • 1970-01-01
  • 1970-01-01
  • 2019-03-18
  • 2021-03-30
  • 2013-05-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多