Warum wurde das Leerzeichen nicht für C ++ 14-stellige Trennzeichen ausgewählt?
b C ++ 14 dank n3781 (was an sich diese Frage nicht beantwortet) Wir können Code wie den folgenden schreiben:
const int x = 1'234; // one thousand two hundred and thirty four
Ziel ist es, Code wie diesen zu verbessern:
const int y = 100000000;
und machen es lesbarer.
Der Unterstrich _
as Zeichen @ wurde in C ++ 11 bereits von benutzerdefinierten Literalen verwendet, und das Komma ,
) hat Lokalisierungsprobleme - viele europäische Länder verblüffend† benutze dies als Dezimaltrennzeichen - und kollidiert mit dem Kommaoperator, obwohl ich mich frage, welcher Code in der realen Welt möglicherweise kaputt gegangen sein könnte, indem ich z.1,234,567
.
Anyway, eine bessere Lösung scheint das Leerzeichen zu sein:
const int z = 1 000 000;
Diese benachbarten numerischen Literal-Token können vom Präprozessor ebenso verkettet werden wie String-Literale:
const char x[5] = "a" "bc" "d";
Stattdessen bekommen wir den Apostroph '
), wird von keinem Schreibsystem verwendet, das mir als Zifferntrennzeichen bekannt ist.
Gibt es einen Grund, warum das Apostroph anstelle eines einfachen Leerzeichens gewählt wurde?
† Es ist verblüffend, weil alle diese Sprachen im Text den Begriff eines Kommas beibehalten, das einen ansonsten atomaren Satz "auseinanderbricht", mit einer Periode, die den Satz "abschließt" - zumindest für mich ist dies ziemlich analog zu a Komma "zerbricht" den integralen Teil einer Zahl und eine Periode "beendet" sie für die fraktionierte Eingabe.