如果声明没有按预期进行评估

时间:2014-03-07 21:47:06

标签: c

我不知道为什么不评估我期望它的方式。如果这很明显,我道歉。问题出在以下if语句中:

if (count == cordX && i == cordY) {

它位于更大的while循环中:

while (count < 10) {
    printf("0%d", count);
    for (i=0; i < 10; i++) {
        if (count == cordX && i == cordY) {
            x[i] = 1;
            printf("|%d", x[i]);
        } else {
            printf("|%d", x[i]);
        }
    }
    count++;
    printf("|");
    printf("\n");
    printf("Count : %d\n", count);
}

现在这将打印出一列和一行的网格。尽管cordX等于“0”并且每次循环运行时计数增加,但每行的第一列打印为“1”。所以它必须只评估if语句的“i == cordY”部分,因为cordY也等于“0”。这是输出的图片,使其比我的解释更清晰:

Output: As you can see "count" is clearly incrementing

1 个答案:

答案 0 :(得分:2)

您的问题不在测试中,这是一个合乎逻辑的问题。在第一次迭代时,您的条件得到满足,因此您将x[i]设置为1;从调试输出中我们可以看到这是i为0时的情况,因此x[0]设置为1。

然而,在while循环的下一次迭代中,x[0] 仍然 1,因此它仍会在第一列中打印1。在x[i]=0之后插入一个else来修复它,不过为什么你首先将值存储在一个数组中是一个难题。