Вы действительно пробовали это?
Ну, я сделал (GCC на Mac OS X).
! является оператором логического отрицания, и! (x) возвращает 1 для x, равного 0, и 0 для всего остального.
'a'
имеет значение, которое известно во время компиляции, поэтому компилятор оценивает !('a')
в 0. Итак
case !('a'):
является эквивалентом
case 0 :
Он даже не генерирует ошибку компилятора и работает нормально.
Я полагаю, что это не то, что вы хотите сделать, и скорее хочу, чтобы регистр перехватывал все значения, кроме «a», а не одно значение 0. Извините, но операторы switch-case не работают таким образом , Выражение после ключевого слова case
должно быть значением, известным компилятору.