# V6012. The '?:' operator, regardless of its conditional expression, always returns one and the same value.

Анализатор обнаружил потенциальную ошибку при использовании тернарного оператора "?:". Независимо от условия, будет выполнено одно и тоже действие. Скорее всего, в коде имеется опечатка.

Рассмотрим самый простой пример:

    int A = B ? C : C;

В любом случае переменной A будет присвоено значение переменной C.

Рассмотрим пример, где уже не так легко заметить подобную ошибку:

    double calc(Box bx, int angle, double scale )
    {
      return Math.tan((angle % 2 == 0 ?
             bx.side_x : bx.side_x) * 0.42) * scale;
    };

Здесь код отформатирован. В тексте программы это может быть одной строкой, и неудивительно, что легко просмотреть опечатку. Ошибка в том, что два раза используется член класса "side_x". Корректный вариант:

    double calc(Box bx, int angle, double scale )
    {
      return Math.tan((angle % 2 == 0 ?
             bx.side_x : bx.side_y) * 0.42) * scale;
    };

Данная диагностика классифицируется как:

CWE-783

Взгляните на примеры ошибок, обнаруженных с помощью диагностики V6012.