Почему куда попало. Он вычисляет значение и делает переход на вычисленую метку. Все законно правда операторы if и else недостижимы. Должны быть варнинги про них. Вот эквивалент
int test_x(int x)
{
switch (x){
case 1: case 2: return 1;
default: return 0;
}
}