Массив символов в c# и c++

Массив символов в c# :

static char[] invalidСharacters = { '~', '@', '#', '$', '%', '^', '-', '_', '(', ')', '{', '}', '`', '+', '=', '[', ']', ':',
            ',', ';',',', '.', '/', '?','/','\\',':','*','?','«','»','<','>','|','&','—'};

Массив символов в c++ (использую Qt) :

 static QStringList invalidСharacters ={ "~", "@", "#", "$", "%", "^", "-", "_", "(", ")", "{", "}", "`", "+", "=", "[", "]", ":",
                    ",", ";",",", ".", "/", "?","/","\\",":","*","?","«","»","<",">","|","&","—"};

Вопрос: почему в c# - символы '«','»','—' = сосотоящие из нескольких одиночных символов - без проблем воспринимаются, как char и могут быть записаны, через одинарные кавычки, а в c++ - необходимо записывать такие символы, как строку (что, конечно, логично - т.к. там не один символ).

Т.е., по-сути, мой вопрос касается больше c# и сводится к заданому выше, и что, по сравнению с внутренним устройством c++ - позволяет так делать ?


Ответы (1 шт):

Автор решения: Антон

Потому что в C# тип char имеет размер 2 байта (https://docs.microsoft.com/ru-ru/dotnet/csharp/language-reference/builtin-types/char), а в C++ 1 байт:

#include <iostream>

int main() {
    std::cout << sizeof(char) << std::endl;
    return 0;
}
→ Ссылка