-1

大家好,我是 C++ 新手,在这里我需要为我的头文件的定点添加做一个 boost 测试。它由以下代码完成。

 BOOST_AUTO_TEST_CASE( add )
    {
        double a=(std::numeric_limits<fpml::fixed_point<short, 8> >::min)(); 
        double b=(std::numeric_limits<fpml::fixed_point<short, 8> >::max)(); 

        for (double x=a; x<b; ++x)
        {
            for (double y=a; y<b; ++y)
            {
                fpml::fixed_point<int, 16> xx = x;
                fpml::fixed_point<int, 16> yy = y;

                BOOST_CHECK( (fpml::fixed_point<int, 16>)(x+y) == xx+yy );
            }
        }
    }

我只需要知道代码中发生了什么,一个fpml::fixed_point<short, 8> 具有限制的类模板short_min被分配给并且具有限制double function a的相同类模板被分配给?fpml::fixed_point<short, 8>short_maxdouble function b

for loop它从short的最小值循环到short的最大值是怎么回事?

有人可以解释一下 for lopp 中发生了什么以及如何完成和检查加法吗

4

1 回答 1

0

std::numeric_limitstraits-type. 在代码中的某个地方,有专门针对fmpl::fixed_point<T, int>. 然后a== 类型的最小值fmpl::fixed_point<short, 8>b== 这种类型的最大值。对于循环检查,在 a 到 b 的范围内,对于所有和 对ab==fmpl::fixed_point (a + b)和的fmpl::fixed_point(a)总和fmpl::fixed_point(b)

于 2013-04-12T12:48:44.607 回答