两个If语句一次执行,而不是一个

时间:2015-02-11 03:42:52

标签: c user-interface if-statement int case

我有一个程序从char数组中获取输入,使用strtok函数检查输入是否包含单词“up”或“down”。如果它包含单词“up”,则我的b值设置为false(即b = 0),并且我的c值也设置为false。如果char数组包含单词“down”,则b设置为false,但是我的c值设置为true(即c = 1)。

当字符串中包含单词“up”时出现问题,因为第一个if语句执行,并在屏幕上打印结果字符,但不知怎的,第二个if也执行打印这些字符。关于此事的任何意见都将不胜感激

编辑:如果我使用单词“down”,则会出现同样的问题,两个if语句都被执行。

int moveC(int y, int x, int b, int i, int c) {
    // int c is a static variable(static int c = FALSE;) defined in the previous function
    int j;
    int k;

switch (b) //assume b is always false (which it is)
{
    case FALSE:
        if (c == 0) {
            mvprintw(y, x, "^");
            refresh();

            for (j = 1; j <= i; j++) {
                mvprintw(y + j, x, ".");
                refresh();
            }
            break;
        }

        if (c == 1) //tried using else if, same result
        {

            mvprintw(y, x, "^");
            refresh();

            for (j = 1; j <= i; j++) {
                mvprintw(y - j, x, ".");
                refresh();
            }
            break;
        }
}
return 0;
}

1 个答案:

答案 0 :(得分:1)

您的代码最有可能执行两次。赠品是你试过if / else。只有一个块永远在一次执行if语句时执行