Конструкция switch-case в языке программирования C позволяет сравнить некоторое выражение с набором значений. Она имеет следующую форму:
switch(выражение) {
case значение_1:
инструкции_1;
break;
case значение_2:
инструкции_2;
break;
...................
case значение_N:
инструкции_N;
break;
default:
инструкции;
}
После ключевого слова switch в скобках идет сравниваемое выражение. Значение этого выражения последовательно сравнивается со значениями после оператора case. И если совпадение будет найдено, то будет выполняться определенный блок case.
В конце каждого блока case ставится оператор break, чтобы избежать выполнения последующих блоков case/default.
Что касается ошибки “case label does not reduce to an integer constant”, она обычно возникает, когда метка case не является целочисленной константой. В языке C метки case должны быть константными выражениями, они должны быть вычислены на этапе компиляции. Если вы хотите ветвиться на значениях времени выполнения, вам нужно использовать if-else вместо switch.