C/C++, отсутствие default в switch и UB

179
13 января 2019, 16:10

Подскажите, является ли отсутствие default в switch неопределенным поведением, если в switch попадает значение, для которого нет соответствующего case?

Answer 1

Нет, поведение вполне определенное - если нет подходящих веток case и отсутствует default, то ни один из блоков не выполняется.

Из рабочего черновика C++20(N4762)
8.4.2 The switch statement
...

  1. When the switch statement is executed, its condition is evaluated and compared with each case constant. If one of the case constants is equal to the value of the condition, control is passed to the statement following the matched case label. If no case constant matches the condition, and if there is a default label, control passes to the statement labeled by the default label. If no case matches and if there is no default then none of the statements in the switch is executed.

Однако, компиляторы могут выдавать предупреждения, если в switch обрабатываются не все случаи.

READ ALSO
Изменение текущей директории

Изменение текущей директории

В моей программе использую класс QProcess для запуска других приложенийНо вот беда, приложения которые запускаются имеют "текущую директорию"...

181
DirectX 11 и FBX SDK - некорректное отображение 3D модели

DirectX 11 и FBX SDK - некорректное отображение 3D модели

Изучаю Direct3D 11Решил написать загрузку 3D моделей с помощью FBX SDK, но при загрузке какой либо модели (в данном случае куб) - она отображается неправильно...

153
C++ Windows API окно с FPS

C++ Windows API окно с FPS

Каждый раз когда я что-нибудь рисую на окне нужно вызвать Redraw для перерисовки окнаКак запустить поток обновления окна или что сделать чтобы...

146
Ошибка в функции sort()

Ошибка в функции sort()

Почему ошибку выдает?

160