Недопустимое использование == оператор

Операция 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