>
>
>
V583. The '?:' operator, regardless of …


V583. The '?:' operator, regardless of its conditional expression, always returns the same value.

Analyzer found a potential error with utilization of "?:" ternary operator. Regardless of its conditional expression, the same operation will be performed. It is quite possible that a misprint is present in the source code.

Let's review the most basic example:

int A = B ? C : C;

In all cases the value of C variable will be assigned to the A variable.

Let's review how such a mistake could appear in the source code of real-life application:

fovRadius[0] =
  tan(DEG2RAD((rollAngleClamped % 2 == 0 ?
  cg.refdef.fov_x : cg.refdef.fov_x) * 0.52)) * sdist;

The code here is formatted. In the program's sources this is a single line of code and it is not surprising that the misprint could be overlooked quite easily. The essence of an error is that the member of the "fov_x" structure is used twice.

The correct code:

fovRadius[0] =
  tan(DEG2RAD((rollAngleClamped % 2 == 0 ?
  cg.refdef.fov_x : cg.refdef.fov_y) * 0.52)) * sdist;

This diagnostic is classified as:

You can look at examples of errors detected by the V583 diagnostic.