Hatalar, hatalar, sorular - sayfa 2870

 
Roman :

Peki ya şablonlar?
Kullanım sözdizimi bir şablon için değilse, bu durumda.

Geliştiriciler bu bölümde bir örnekle bir typename açıklaması yerleştirirken. Sonuna kadar okuyun ve bu paragrafı ve bu örneği bulun

 
A100 :

(1) ve (2) arasındaki fark nedir? Sevgili geliştiriciler - belki Roman haklıdır ve şimdi typename bir tür döndürür?

Bence makroya daha yakın

 
A100 :

Geliştiriciler, bu bölümde bir örnekle bir typename açıklaması yerleştirirken. Sonuna kadar okuyun ve bu paragrafı ve bu örneği bulun

Belgelerin bu bölümünün şablonlarla ilgili olduğunu anlıyorsunuz.
Şablonlar bu örneklerle ilgili değildir.
typename, sizeof almakla aynı

 #define   A '+'

void OnStart ()
{
   Print ( sizeof (A));
   Print ( typename (A));
   Print ( sizeof ( "string" ));
   Print ( typename ( "string" ));
}
 2020.10 . 09 02 : 20 : 21.917 TestScript (MNQZ20,M1)   2
2020.10 . 09 02 : 20 : 21.917 TestScript (MNQZ20,M1)   ushort
2020.10 . 09 02 : 20 : 21.917 TestScript (MNQZ20,M1)   12
2020.10 . 09 02 : 20 : 21.917 TestScript (MNQZ20,M1)   string
 
Roman :

Belgelerin bu bölümünün şablonlarla ilgili olduğunu anlıyorsunuz.
Şablonlar bu örneklerle ilgili değildir.
typename, sizeof almakla aynı

Belgeler şöyle diyor: Farklı veri türleriyle çalışmanın genel yollarını oluşturmak için anahtar kelimeyi kullanmanız gerekir.   tür adı   argümanın türünü bir dizge olarak almak için .

Bu cümlede kelime kalıbı nerede? Görmüyorum? Evet... şablonlu bir örnek. Ve oradaki Geliştiricilerin size tüm durumlar için örnekler vermeleri gerektiğini mi?

 
A100 :

Belgeler şöyle diyor: Farklı veri türleriyle çalışmanın genel yollarını oluşturmak için anahtar kelimeyi kullanmanız gerekir.   tür adı   argümanın türünü bir dizge olarak almak için .

Bu cümlede kelime kalıbı nerede? Görmüyorum? Evet... şablonlu bir örnek. Ve oradaki Geliştiricilerin size tüm durumlar için örnekler vermeleri gerektiğini mi?

Bu durumda hiçbir şey oluşturmuyoruz, isimlerini türlerden alıyoruz.
Şablonlardan kurtulun. Ve şablon için belgeler.
Baskı sonucunu görüyor musunuz? Başka ne gerekiyor?
Dürüst olmak gerekirse, yanlış anlamanızı anlamıyorum.

 
Roman :

Bu durumda hiçbir şey oluşturmuyoruz, isimlerini türlerden alıyoruz.
Şablonlardan kurtulun. Ve şablon için belgeler.
Baskı sonucunu görüyor musunuz? Başka ne gerekiyor?

Bu baskının sonucunu görüyor musunuz?

 void OnStart ()
{
     Print (" ushort ");
}

sonuç: ushort

Şimdi: "ushort" böyle bir tip midir? Ve böyle bir rekor sizin için normal mi?

 void OnStart ()
{
    "ushort" ch = '+' ;
}
Hayır, bu bir tür değil, bir dize. Yazdırma türleri yazdırmaz - PrintFormat'ta böyle bir biçim yoktur. Dizeler, sayılar, semboller - baskılar, ancak türler - hayır
 
A100 :

Bu baskının sonucunu görüyor musunuz?

sonuç: ushort

Şimdi: "ushort" böyle bir tip midir? Ve böyle bir rekor sizin için normal mi?

))) beni şaşırtıyorsun

Baskıya bir dize değişmezi ilettiniz ve onu aldınız.
Bir türün adını almak için typename("ushort") anahtar sözcüğünü kullanın.
dize türü adını al

typename(string) öğesinin kendisini iletin, aynısını alırsınız.

Genel olarak, bu, typename anahtar sözcüğüyle çalışmayı açıklamayan bir belge yığınıdır.
Sizeof için bir açıklama vardır ve typename için yalnızca şablonlar içindir.
Yukarıda bir örnek vermiş olsam da typename türün adını alır , sizeof boyutu alır ile aynıdır.  

 
Roman :

))) beni şaşırtıyorsun

Baskıya bir dize değişmezi ilettiniz ve onu aldınız.

Böylece baskıya değişmez bir dize geçtiniz

 void OnStart ()
{
     Print ( typename ( '+' ));
}

sonuç: ushort

Tüm açıklamalardan ve belgeleri inceledikten sonra farklı düşünüyorsanız, o zaman problemleriniz şunlardır:

 void OnStart ()
{
     Print ( short ); //Error - потому что принт типы не печатает
}
 
A100 :

Böylece baskıya değişmez bir dize geçtiniz

sonuç: ushort

Tüm açıklamalardan ve belgeleri okuduktan sonra farklı düşünüyorsanız, o zaman bunlar sizin sorunlarınız.

Ve hattın iade edildiğini iddia etmedikçe?
Dize ve Print()'e bağlısın
Ve çıktı bir dize değişmezi değil, ushort bir karakter tamsayı türü olacaktır.
Genel olarak da, bilginiz dahilinde benim sorunum değil.

 
Roman :

Ve çıktı bir dize değişmezi değil, ushort bir karakter tamsayı türü olacaktır.

Çıktı tam olarak bir dize değişmezi olacaktır. Burada - doğrudan kanıt buldum - hiç baskı yok:

 int f()
{
     return typename (' +' ); //warning: implicit conversion from ' string ' to 'number'
}
Ve şimdi tam tersini kanıtlamaya çalışın - ayrıca bir baskı olmadan! Konuyla ilgili fantezilerle değil, bir örnekle kanıtlamak doğaldır: "belgeler yanlış bir şey söylüyor - daha iyisini biliyorum"