Errores, fallos, preguntas - página 1125

 

Probablemente un error 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
}

No lo he calculado yo, pero con i par -> j = -1, y la última i=18446744073709551615/*ULONG_MAX */-1-> par

 
A100:

Probablemente un error de cálculo (MT\930\32)

No lo he calculado yo, pero con i par -> j = -1, y el último i=18446744073709551615/*ULONG_MAX */-1-> par

Probé tu script.

La desinstalación se produce en un momento a partir de la unión del gráfico. Da la sensación de que no se pasa el control al bucle en absoluto.

 
Fleder:

Da la sensación de que no se transfiere ningún control al bucle.

Realmente lo hace, pero es rápido :)
 
void OnStart()
{
        int j = 1;
        for ( int i = 0; i < INT_MAX; i++ )
                j = -j;
        Print( "j=", j );
}
Es mucho más lento...
 
A100:
Realmente lo es, pero es rápido :)

Si no recuerdo mal, las versiones anteriores del compilador se quejaban cuando intentaba establecer

demasiadas iteraciones en el bucle (LONG_MAX y ULONG_MAX) y ahora el compilador guarda silencio...

Tengo la versión 910 de 32 bits.

 

Aun así, es silencioso y "rápido de contar":

void OnStart()
{
        int j = 1;
        for ( int i = 0; i < ULONG_MAX; i++ )
                j = -j;
        Print( "j=", j );
Aunque, supuestamente, debería caer en un bucle infinito.
 

Dice palabrotas donde no hace falta, y donde hace falta, se calla.

¡Sus modales!

 
Fleder:

Si no recuerdo mal, las versiones anteriores del compilador se quejaban cuando intentaba establecer

demasiadas iteraciones en el bucle (LONG_MAX y ULONG_MAX), pero el compilador no dice nada ahora...

En general, el compilador no puede conocer el número de iteraciones.

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:

En general, el compilador no puede conocer el número de iteraciones

Lo que es verdad, es verdad. Así que es un error de ejecución.
 
¿Quizá a la sentencia for no le gustan los números de 8 bytes en una expresión probada?