错误、漏洞、问题 - 页 1125

 

Probably a calculation error (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
}

我自己没有计算过,但如果是偶数i->j=-1,最后i=18446744073709551615/*ULONG_MAX */->偶数

 
A100:

Probably a calculation error (MT\930\32)

我自己没有计算过,但如果是偶数i->j=-1,最后i=18446744073709551615/*ULONG_MAX */->偶数

尝试了你的脚本。

解套发生在加入图形的一瞬间。感觉好像根本没有把控制权传给循环。

 
Fleder:

感觉好像根本没有控制权被转移到环路上。

真的是这样,但它的速度很快 :)
 
void OnStart()
{
        int j = 1;
        for ( int i = 0; i < INT_MAX; i++ )
                j = -j;
        Print( "j=", j );
}
它的速度更慢...
 
A100:
真的是这样,但它的速度很快 :)

如果我没有记错的话,以前版本的编译器在我试图设置

循环中的迭代次数太多(LONG_MAX和ULONG_MAX),现在编译器保持沉默......

我的版本是910 32位。

 

即使如此,它也是无声无息,"快速计数"。

void OnStart()
{
        int j = 1;
        for ( int i = 0; i < ULONG_MAX; i++ )
                j = -j;
        Print( "j=", j );
虽然,据说它应该陷入无限循环。
 

没有必要 发誓的地方,他就说脏话,在有必要发誓的地方,他就保持沉默。

他们的举止!

 
Fleder:

如果我没有记错的话,以前版本的编译器在我试图设置

循环中的迭代次数太多(LONG_MAX和ULONG_MAX),但编译器现在什么都不说了......

一般来说,编译器不能知道迭代的数量。

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:

一般来说,编译器不能知道迭代的数量

真实的东西就是真实的。所以这是一个运行时错误
 
也许for语句 不喜欢测试表达式中的8字节数字?