我不明白为什么这两个有不同的输出
有两个简单的C程序
int main()
{
int i;
for (i = 0;i<3; i++)
{
switch (i++)
{
case 0:
{
printf("zero");
}
case 1:
{
printf("one");
}
case 2:
{
printf("two");
break;
}
default:
{
printf("end");
}
}
}
}
这给出了这个输出:零一二二
在这种情况下,当变量 i 的值从 0 变为 1 时切换后?
int main()
{
int i;
for (i = 0;i<3; i++)
{
switch (++i)
{
case 0:
{
printf("zero");
}
case 1:
{
printf("one");
}
case 2:
{
printf("two");
break;
}
default:
{
printf("end");
}
}
}
}
这给出了这个输出:一个两端
最佳答案
switch (i++)
{
}
等同于:
int j=i;
i++;
switch (j)
{
}
同时
switch (++i)
{
}
等同于:
i++;
switch (i)
{
}
关于c - 不中断切换和 i++ 与++i,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17244818/