Invalid use of == operator

Операция Equality в операторе присваивания

Описание

Этот дефект происходит, когда вы используете оператор равенства вместо оператора присваивания в простом операторе.

Риск

Использование == оператор вместо = оператор может тихо привести к неправильным результатам. Если вы намеревались присвоить значение переменной, присвоение не происходит. Переменная сохраняет свое предыдущее значение или если не инициализированный ранее, остается неинициализированным.

Фиксация

Используйте = (присвоение) оператор вместо == (равенство) оператор.

Проверка появляется на цепочечном присвоении и операторах равенства, таких как:

compFlag = val1 == val2;
Для лучшей удобочитаемости вашего кода поместите регистрацию равенства круглой скобки.
compFlag = (val1 == val2);

Если использование == оператор предназначается, добавьте комментарии в свой результат или код, чтобы избежать другого анализа. Смотрите Результаты Polyspace Адреса Через Исправления ошибок или Выравнивания.

Примеры

развернуть все

void populate_array(void)
{
    int i = 0;
    int j = 0;
    int array[4];

    for (j == 5; j < 9; j++) {
        array[i] = j;
        i++;
    }
}

В for- цикл, оператор j ==5 тесты, ли j равно 5 вместо установки j к 5. for- цикл выполняет итерации от 0 до 8 потому что j запускается со значения 0, не 5. Побочный продукт недопустимого оператора равенства является за пределы доступом к массиву в следующей строке.

Коррекция — превращается в оператор присваивания

Одна возможная коррекция должна изменить == оператор к одному знаку "равно" (=). Изменение == подпишите твердость оба дефекта потому что for- цикл выполняет итерации намеченного числа раз.

void populate_array(void)
{
    int i = 0;
    int j = 0;
    int array[4];

    for (j = 5; j < 9; j++) {
        array[i] = j;
        i++;
    }
}

Проверяйте информацию

Группа: Программирование
Язык: C | C++
Значение по умолчанию: На для рукописного кода, прочь для сгенерированного кода
Синтаксис командной строки: BAD_EQUAL_EQUAL_USE
Удар: высоко
ID CWE: 480, 482
Введенный в R2013b