В Си/Си++ оператор switch позволяет выполнить одно из N действий. Какое действие вызывается -- зависит от входного параметра. Я не буду показывать синтаксис, показываю только принцип:

Например, если тип измерения равен 1, то делать А.
Есть равен 2, то делать Б.
Если равен 3, то делать Ц.

Ну и есть волшебная опция default, которая срабатывает тогда, когда не срабатывают предыдущие.

Бывает, что по смыслу у вас особенным образом обрабатываются несколько значений, а для всех остальных подходит "общее". Тогда каждый дурак поставит default и напишет в нём то, что надо. Но что, если типов измерения всего три?

Велик соблазн поставить только три кейса и на этом закончить блок. Так делать не надо. Я много раз сталкивался с тем, что рано или поздно добавляется новый тип измерения, и надо перебрать все свитчи, чтобы они правильно срабатывали. Легко что-нибудь упустить. Кроме того, если значение параметра окажется ошибочным, программа пропустит свитч "молча", а последствия придётся долго анализировать, чтобы выяснить, где косяк.

Чтобы ошибка вылезала сразу, я стал принудительно добавлять во все свитчи секцию default. И в случаях, описанных выше, попадание в эту секцию как раз означает ошибочное значение параметра!

У меня есть специальный макрос, который я сую в default-секцию. Он выводит сообщение в лог и на экран. А сообщение содержит не просто предупреждение, а номер строки и имя файла, откуда сообщение выскакивает. Это не надо прописывать вручную, потому что макросы __FILE__ и __LINE__ сразу подставляют правильные номера, даже если эти макросы расположены в другом макросе.

Такая система позволяет не только узнать, что где-то неправильно работает свитч. В сообщении сразу указывается, ГДЕ это происходит. Я не могу сосчитать, сколько раз меня спасала такая система.