2012-11-01 72 views
0

可能重複:
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的值是什麼? 這只是代碼片段,給出的答案是10.看不到如何?

+2

使其編譯並使用調試器來逐步瀏覽並觀察變量變化 – PlasmaHH

+2

google'duff's device' – 2012-11-01 12:58:00

+0

case標籤只是標籤,'switch'是隻是一個'goto'。也許這有幫助。 –

回答

1

n最終值是10之前的開關n是5,q是2.切換進入殼體1 n遞增1次在第一次迭代中,而在第二個4次以上。最後n的值爲5 + 1 + 4 = 10.

+0

嗯,是的,現在代碼被編輯了,'n'確實是10。 – Dialecticus