2014-12-09 2 views
-3

При компиляции программы в C, есть ошибка:C круглые скобки вокруг сравнения в операнде

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

линия сгенерирована ошибка является строка время в этом коде:

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; 
} 

Как может исправить ошибку? Цените помощь с объяснением.

+9

Что это должно даже означать: 'в то время как (i <= (* stock) .numProd! = found) {' –

+1

' while (i <= (* stock) .numProd! = found) 'запутал цикл while. возможно, 'while (i <= (* stock) .numProd &&! found)' –

+0

Что происходит с предложением while? –

ответ

1

На первый взгляд, вы, вероятно, хотите изменить

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

в

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

Вы проверки вы не превышая границы массива и что продукт hasn пока не найдено.

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

Если вы пытаетесь цикла в то время как i <= (*stock).numProd и found это не так, вы хотите && и !, не !=.

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

break ING после того, как вы нашли матч будет работать еще лучше.

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; 
    } 
} 
0

Если моя способность читать неправильный код служит мне хорошо, вы хотите изменить эту строку:

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

к

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

Смежные вопросы