程序序列的奇怪行为

时间:2016-12-07 19:58:01

标签: c switch-statement

#include <stdio.h>
#include <time.h>
void delay(int milliseconds) //by http://c-for-dummies.com/blog/?p=69
{ 
long pause;
clock_t now,then;

pause = milliseconds*(CLOCKS_PER_SEC/1000);
now = then = clock();
while( (now-then) < pause )
    now = clock();
}


int main()
{
int i=1;
int j;
while(1)
{
switch (i)
{
    case 1:
    for(j=0; j < 10; j++)
    {
        printf("%d\n",j);
        if(j==9)
        {
            printf("jump 2");
            i=2;
        }
    }
    break;

    case 2:
    printf("in 2");
    delay(5000);
    printf("jump 1");
    i=1;
}
}
return 0;
}

所以我精简了一点。

现在应输出数字1-9,&#34;跳转2&#34;,&#34;在2&#34;然后延迟5秒,然后跳过1&#34;。

实际上它输出数字1-9,等待5秒然后输出&#34;跳跃2&#34; &#34;在2&#34;和&#34;跳1&#34;

2 个答案:

答案 0 :(得分:1)

它只是缓冲。 - melpomene

一个简单的\ n或fflush(stdout)修复它...... - Manuel Burgstaller

答案 1 :(得分:-1)

这不是'跳跃&#39;如你所说。 你看到&#39;休息&#39;关键词?这将打破整个开关案例逻辑。

检查此链接: https://www.tutorialspoint.com/cprogramming/switch_statement_in_c.htm