﻿# V3092\. Range intersections are possible within conditional expressions\.

The analyzer has detected a potential error in a condition\. The program must perform different actions depending on which range of values a certain variable meets\.

For this purpose, the following construct is used in the code:

```cpp
if ( MIN_A < X && X < MAX_A ) {
  ....
} else if ( MIN_B < X && X < MAX_B ) {
  ....
}
```

The analyzer generates the warning when the ranges checked in conditions overlap\. For example:

```cpp
if ( 0 <= X && X < 10)
  FooA();
else if ( 10 <= X && X < 20)
  FooB();
else if ( 20 <= X && X < 300)
  FooC();
else if ( 30 <= X && X < 40)
  FooD();
```

The code contains a typo\. The programmer's fingers faltered at some moment and he wrote "20 <\= X && X < 300" instead of "20 <\= X && X < 30" by mistake\. If the X variable stores, for example, the value 35, it will be the function FooC\(\) that will be called instead of FooD\(\)\.

The fixed code:

```cpp
if ( 0 <= X && X < 10)
  FooA();
else if ( 10 <= X && X < 20)
  FooB();
else if ( 20 <= X && X < 30)
  FooC();
else if ( 30 <= X && X < 40)
  FooD();
```