switch语句和增量

dra*_*war 3 c

我有以下代码:

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);
Run Code Online (Sandbox Code Playgroud)

所述i++表达式的计算结果i为1,因为它是一个递增运算符,因此在壳体1的语句将被执行,这意味着j被评估为2.然后没有中断,则程序继续执行下面的所有语句.由于值i不变,因此值也j不变.所以我希望输出是类似的2 2但事实证明是2 6.请任何人给我一个解释,谢谢!

Ani*_*han 5

由于i的值不变,因此j的值也不变.

不对.

j += i是一样的j = j + i,而i is 2一旦里面switch(..)语句.

执行3次给你6.