C++, karakter değişmezlerinin sıralanması konusunda ne gibi garantiler verir? temel kaynak karakter seti'da belirli bir karakter sırası var mı?C++, karakter değişmezlerinin sıralanması konusunda ne gibi garantiler verir?
cevap
standart sadece taslaktan, 0
9
ondalık basamak sipariş için C++ 11 standart bölümü 2.3
[lex.charset] bir garanti sağlar (örn ne dersiniz 'A' < 'z'
? Gerçek olması garanti 'a' < 'z'
mi?): kaynak ve yürütme temel karakter kümeleri hem de
, ondalık hane yukarıdaki listede 0 sonra her bir karakter önceki değerinden daha bir fazla olacaktır değeri.
temel uygulama karakter kümesi ve her bir temel kaynak karakter kümesinin tüm üyeleri ihtiva eder temel uygulama geniş karakter seti,:
ve aksi halde (vurgu madeni) der artı uyarısını temsil eden kontrol karakterleri, geri boşluğu ve satır başı dönüşü, artı sıfır değerine sahip, boş bir karakter (sırasıyla, boş geniş karakter). Her bir temel yürütme karakter kümesi için, , üyelerin değerleri , negatif olmayan ve birbirinden farklı bir olmalıdır.
Not, EBCDIC, ardışık olmayan bir karakter kümesine sahiptir.
Gerçekten kötü bir uygulama '' z '==' a '+ 25' ve _still_ '' b '<' a '' olabilir. Bunun, EBCDIC ve SMS’i bile hesaba kattığını belirttiğine inanıyorum. – MSalters
Hiç bir garanti olmaması, desteğinizi bazı uygulamalara sokmanın, bazen "en" olabilen, bazen iyi bir fikir olduğunu göstermektedir. Benim düşüncemde iyi bir örnek Qt 'nineof (int) == 4' olan uygulamalara yapışmaktır ... Desteklemek istedikleri tüm derleyiciler bunu garanti ederler, ama elbette hepsi değil, fakat bu tür uygulamalarla kendinizi sınırlarsanız, hayatı daha kolay hale getirebilir. Bununla birlikte, dikkatli olmanız ve uygulamaya koyduğunuz uygulamaları bilmeniz ve tabi ki, uygulamaya bağlı olarak böyle bir sınırlamanın göz önünde bulundurulması gerekir. – leemes