C括号围绕操作数的比较

时间:2014-12-09 20:45:28

标签: c

在C中编译程序时出错:

error: suggest parentheses around comparison in operand of '!=' [-Werror=parentheses]

生成此错误的行是此代码中的while行:

void addProductToStock(tStock *stock, tProduct product) {
    int i;
    bool found;

    i = 1;
    found = false;

    while (i <= (*stock).numProd != found) {
        if ((*stock).products[i].productCode != product.productCode) {
            i++;
        }
        else {
            found = true;
        }

    }

    (*stock).products[i].availableUnits = (*stock).products[i].availableUnits - product.unitsRequested;
    (*stock).products[i].unitsRequested = (*stock).products[i].unitsRequested + product.unitsRequested;
}

我如何修复错误?通过解释感谢帮助。

3 个答案:

答案 0 :(得分:1)

while (i <= (*stock).numProd != found) {

如果您在i <= (*stock).numProdfound不成立时尝试循环,则需要&&!,而不是!=

while (i <= (*stock).numProd && !found) {

break在你找到匹配后会更好。

while (i <= stock->numProd) {
    if (stock->products[i].productCode != product.productCode) {
        i++;
    } else {
        found = true;
        break;
    }
}

此外,您确定阵列从1转到numProd吗?通常它是0numProd - 1

最后,for循环执行此操作。

for (i = 1; i <= stock->numProd; i++) {
    if (stock->products[i].productCode == product.productCode) {
        found = true;
        break;
    }
}

答案 1 :(得分:1)

乍一看,你可能想要改变

while (i <= (*stock).numProd != found)

while (i <= (*stock).numProd && !found)

您正在检查您是否未超出数组边界尚未找到该产品。

答案 2 :(得分:0)

如果我能够很好地阅读错误的代码,那么你想改变这一行:

while (i <= (*stock).numProd != found) {

while (i <= (*stock).numProd && !found) {