Erros, bugs, perguntas - página 1125

 

Provavelmente um erro de cálculo (MT\930\32)

void OnStart()
{
        int j = 1;
        for ( ulong i = 0; i < ULONG_MAX; i++ )
                j = -j;
        Print( "j=", j ); //результат j=1, а должен быть j=-1
}

Eu próprio não o calculei, mas mesmo com i -> j = -1, e o último i=18446744073709551615/*ULONG_MAX */-1-> mesmo

 
A100:

Provavelmente um erro de cálculo (MT\930\32)

Eu próprio não o calculei, mas com i -> j = -1, e o último i=18446744073709551615/*ULONG_MAX */-1-> até

Experimentei o seu guião.

A desactivação acontece num momento a partir da junção do gráfico. Parece que não se passa qualquer controlo para o laço.

 
Fleder:

Parece que não está a ser transferido qualquer controlo para o laço.

Realmente, mas é rápido :)
 
void OnStart()
{
        int j = 1;
        for ( int i = 0; i < INT_MAX; i++ )
                j = -j;
        Print( "j=", j );
}
É muito mais lento...
 
A100:
É realmente, mas é rápido :)

Se bem me lembro, as versões anteriores do compilador queixaram-se quando tentei definir

demasiadas iterações no ciclo (LONG_MAX e ULONG_MAX) e agora o compilador mantém-se em silêncio...

Tenho a versão 910 32 bit.

 

É silencioso e "rápido a contar", mesmo assim:

void OnStart()
{
        int j = 1;
        for ( int i = 0; i < ULONG_MAX; i++ )
                j = -j;
        Print( "j=", j );
Embora, supostamente, deva cair num loop infinito.
 

Jura onde não há necessidade de jurar, e onde há necessidade de jurar, fica calado.

As suas maneiras!

 
Fleder:

Se bem me lembro, as versões anteriores do compilador queixaram-se quando tentei definir

demasiadas iterações no loop (LONG_MAX e ULONG_MAX), mas o compilador não diz uma palavra agora...

Em geral, o compilador não pode saber o número de iterações.

int f( ulong max )
{
        int j = 1;
        for ( ulong i = 0; i < max; i += ULONG_MAX )
                j = 0;
        return ( j );
}
void OnStart()
{
        ulong max = ULONG_MAX;
        Print( "j=", f( max )); //результат j=1, а должно быть j=0
}
 
A100:

Em geral, o compilador não pode saber o número de iterações

O que é verdade, é verdade. Portanto, é um erro de tempo de execução.
 
Talvez o para declaração não goste de números de 8 bytes numa expressão testada?