在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;
}
我如何修复错误?通过解释感谢帮助。
答案 0 :(得分:1)
while (i <= (*stock).numProd != found) {
如果您在i <= (*stock).numProd
和found
不成立时尝试循环,则需要&&
和!
,而不是!=
。
while (i <= (*stock).numProd && !found) {
break
在你找到匹配后会更好。
while (i <= stock->numProd) {
if (stock->products[i].productCode != product.productCode) {
i++;
} else {
found = true;
break;
}
}
此外,您确定阵列从1
转到numProd
吗?通常它是0
到numProd - 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) {