Hatalar, hatalar, sorular - sayfa 1127

 
Fleder :

Ve bu permütasyon ne veriyor? t, ULONG_MAX -1'den daha az olduğu için aynı kaldı.

Yanlış örnek verdim - int ile bir karşılaştırma vardı, ama burada long ile

 for ( int t= 0
 void OnStart ()
{
   long t= 0 ;
 

uint ve ulong türlerinin önceliği, int ve long türlerinden daha yüksektir:

İkili bir işlemle birleştirildiğinde dönüşümler

Karşılaştırılan ifadelerde eski türe dönüştürmeyi kullanmak mantıklı olacaktır.

Ancak kontrol edilen döngü ifadeleri için durum böyle görünmüyor.

 
ULONG_MAX'ın böyle bir türü yoktur, int ile karşılaştırıldığında - int, uzun - uzun ile karşılaştırıldığında
 
A100 :
ULONG_MAX'ın kendi başına türü yoktur
Ve bu numara ne tür: 18446744073709551615?
 
A100 :
ULONG_MAX'ın böyle bir türü yoktur, int ile karşılaştırıldığında - int, uzun - uzun ile karşılaştırıldığında

Ve ulong ile karşılaştırıldığında?

 void OnStart ()
{
   ulong n= 18446744073709551615 ;
   Print ( ULONG_MAX ==n);   //true
}
 
A100 :
ULONG_MAX'ın böyle bir türü yoktur, int ile karşılaştırıldığında - int, uzun - uzun ile karşılaştırıldığında

Ya da belki tam tersi?

int ve long ulong ile karşılaştırıldığında ulong olacak mı?

 
Fleder :

Ya da belki tam tersi?

int ve long ulong ile karşılaştırıldığında ulong olacak mı?

İmzalı ve imzasız karşılaştırıldığında, bir uyarı verilir, birini açıkça diğerine dönüştürmezseniz, muhtemelen bit düzeyinde bir karşılaştırma olacaktır.
 

Döngülerde gerçekten de imzalı bir türe dönüşüm var gibi görünüyor:

 void OnStart ()
{
   ulong n= 0 ;
   for ( ulong i= 0 ;i< ULONG_MAX ;i++) {n++;}
   Print ( "n = " ,n);           //0
   Print (( long ) ULONG_MAX );   //-1
}

Ve yineleme yapılmaz.

 
A100 :
İmzalı ve imzasız karşılaştırıldığında, bir uyarı verilir, birini açıkça diğerine dönüştürmezseniz, muhtemelen bit düzeyinde bir karşılaştırma olacaktır.
 void OnStart ()
{
   long l= 13 ;
   ulong u= 13 ;
   bool compare=(l==u);           //предупреждения нет
   Print ( "compare = " ,compare);   //compare = true
}

 
bool f( int i, uint j )
{
         return ( i < j );
}
ve böylece var