Хіба що навпаки — «тепер заборонено кількобайтні комбінації»
Виділено мною:
ANSI C SPECIFICATION (C89) написав:3.1.3.4 Character constants
Syntax
character-constant:
'c-char-sequence'
L'c-char-sequence'
…
Examples
…
To specify an integer character constant containing the two characters whose values are 0x12 and '3', the construction
'\0223' may be used
Щодо «wide character constant» («зараз часто використовуються складніші кодування»), так для них з 1989 року оте L, а не кілька символів у константі.
Справа в тому, що тут використовується спочатку cin >> a й у символьну змінну a читається лише перший символ з набраних 10/11/12.
До milti-character constant справа просто не доходить, їх нема куди у один char запхати. Хоча незалежно від цього компілятор мав би видати попередження в дусі «case label value exceeds maximum value for type» (бо тип у switch() — char, а константа mult-char).
▼Отак чудово працює (ну, на low-endian
#include <stdio.h>
void fu(unsigned key)
{
switch (key) {
case 'dc':
puts ("Command 'cd'");
break;
case 'mr':
puts ("Command 'rm'");
break;
}
}
void fl(unsigned long key)
{
switch (key) {
case 'feeb':
puts("Command 'beef'");
break;
case 'daeD':
puts("command 'Dead'");
break;
}
}
void main()
{
fu('mr');
fu('c' + ('d'<<8));
const char *p = "Dead";
fl( *(unsigned long*)p);
return 0;
}