Şuradan (http://ddili.org/forum/thread/1021) alıntıdır:
Alıntı (acehreli):
Dizgi gösterimi bizi yanıltıyor ama typeid() aslında TypeInfo diye bir tür döndürür:
> struct Yapı
> {
> int i;
> double d;
> }
>
> void main()
> {
> TypeInfo türBilgisi = typeid(Yapı);
>
> // Öylesine bir örnek:
> assert(türBilgisi.tsize() == Yapı.sizeof);
> }
> ```
> "ü harfini iki ASCII karakter ile ifade eder" tam doğru değil çünkü D'deki char türünün artık ASCII ile hiç ilgisi yok. Evet, 128'den küçük olan değerler bilerek birbirlerine denk yapılmışlardır ama char'ın UTF-8 kod birimi olduğunu söylemek daha doğru. Hatta, tam doğru konuşmak gerekirse, ü'yü oluşturan kod birimlerinin ikisi de ASCII olamaz çünkü ikisinin değeri de 127'den büyük: 195 ve 188.
>
> Ali
>
Haklısın Ali hocam, şöyle denediğimizde anyı şekilde çalışırken aldatıcı görünümü açığa çıkıyor:
typeid(Yapı).toString().writeln;
Tıpkı 'stringof()''dan farklı olması gibi; adı üstünde string(dizgi) döndürüyor. Türü birebir döndürmek istediğimizde ise 'typeof()' kullanıyoruz. O da sanki makro gibi bir etki yapıyor ve olduğu yere türün gerçek kimliği geliyor. Sanki oraya elle yazılmış gibi...:)
Diğer konu için ise belki "iki char karakter" demeliydim. Sonuçta extented ASCII'de var, ilk çıkan ve bahsettiğin gibi kısa olarak standartlaşmış ASCII tablosu da var. Bence sık kullanılan UTF8 karakterlerin ASCII ile denk getirilmesinin sebebi az yer kaplamalarını sağlamak. Aksi halde herhangi bir İngilizce metin en az iki kat yer kaplayacaktı.
Sevgiler, saygılar...
--
[ Bu gönderi, <http://ddili.org/forum>'dan dönüştürülmüştür. ]