Errori, bug, domande - pagina 1127

 
Fleder:

Cosa fa questo riarrangiamento? t era inferiore a ULONG_MAX-1 e rimane lo stesso.

Ho citato questo esempio sbagliato - era un confronto con int, mentre qui è con long

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

Itipi uint e ulong hanno una priorità maggiore di int e long:

Trasformazioni quando si fondono con l'operazione binaria

Sarebbe logico usare la conversione a un tipo superiore nelle espressioni comparate.

Ma questo non sembra applicarsi alle espressioni del ciclo che vengono controllate.

 
ULONG_MAX non ha un tipo di per sé, rispetto a int sarà int, rispetto a long sarà long
 
A100:
ULONG_MAX non ha un tipo in sé
Che tipo ha questo numero:18446744073709551615?
 
A100:
ULONG_MAX non ha un tipo in sé, rispetto a int sarà int, rispetto a long sarà long

E rispetto a ulong?

void OnStart()
{
  ulong n=18446744073709551615;
  Print(ULONG_MAX==n);   //true
}
 
A100:
ULONG_MAX non ha un tipo di per sé, rispetto a int sarà int, rispetto a long sarà long

Può essere il contrario?

Int e long contro ulong sarebbe ulong?

 
Fleder:

Può essere il contrario?

int e long rispetto a ulong sarebbe ulong?

Quando si confrontano firmati e non firmati, viene dato un avvertimento, a meno che uno sia esplicitamente convertito nell'altro, sarà probabilmente un confronto bitwise
 

I cicli sembrano convertire in un tipo firmato:

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

E non viene eseguita alcuna iterazione.

 
A100:
Quando si confrontano firmati e non firmati, viene emesso un avviso, a meno che uno sia esplicitamente convertito nell'altro, ci sarà probabilmente un confronto bitwise
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 );
}
ma è così.