﻿# V551\. Unreachable code under a 'case' label\.

The analyzer detected a potential error: one of the switch\(\) operator's branches never gets control\. The reason is that the switch\(\) operator's argument cannot accept the value defined in the case operator\.

Consider this sample:

```cpp
char ch = strText[i];
switch (ch)
{
case '<':
  strHTML += "<";
  bLastCharSpace = FALSE;
  nNonbreakChars++;
  break;
case '>':
  strHTML += ">";
  bLastCharSpace = FALSE;
  nNonbreakChars++;
  break;
case 0xB7:
case 0xBB:
  strHTML += ch;
  strHTML += "<wbr>";
  bLastCharSpace = FALSE;
  nNonbreakChars = 0;
  break;
...
}
```

The branch following "case 0xB7:" and "case 0xBB:" in this code will never get control\. The 'ch' variable has the 'char' type and therefore the range of its values is \[\-128\.\.127\]\. The comparisons "ch \=\= 0xB7" and "ch\=\=0xBB" will always be false\. To make the code correct, we must cast the 'ch' variable to the 'unsigned char' type:

```cpp
unsigned char ch = strText[i];
switch (ch)
{
...
case 0xB7:
case 0xBB:
  strHTML += ch;
  strHTML += "<wbr>";
  bLastCharSpace = FALSE;
  nNonbreakChars = 0;
  break;
...
}
```