我有以下代碼:switch語句和增量
int i = 1;
int j = 0;
switch (i++)
{
case 1: j += i;
case 2: j += i;
case 3: j += i;
break;
}
printf("%d %d",i, j);
的i++
表達式計算i
到1,因爲它是一個遞增運算符,因此在殼體1的語句將被執行,這意味着j
被評估到2.然後,如果沒有中斷,程序將繼續執行以下所有語句。由於i
的值不會更改,因此j
的值也不會。所以我期望輸出是類似2 2
,但它原來是2 6
。任何人都可以給我一個解釋,謝謝!
請原諒我的無知,我只是認爲j + = i相當於j = i + 1。所以i(1)的原始值將被用於觸發情況1,然後在處理情況1的語句之前將其設置爲遞增的值(2),對嗎? – drawar 2013-02-23 09:45:00
@drawar這是正確的。 – 2013-02-23 09:46:19
這絕對有幫助,非常感謝! – drawar 2013-02-23 10:36:24