通过两个类时奇怪的输出数据

时间:2014-09-14 15:21:35

标签: c++ pointers android-ndk eigen

我的stattic llib有一些不稳定的数值结果:所以我刚开始寻找原因:在NDK c ++端用android_log发现了一些非常奇怪的输出数据。

这是我的代码部分,其中是log:

数据输入矩阵

SpectralClustering::SpectralClustering(Eigen::MatrixXd& data, int numDims)
    : mNumDims(numDims), mNumClusters(0)
{
    Eigen::MatrixXd Deg;

    for ( int ijk2 = 0; ijk2 <data.rows(); ++ijk2) {
        double fde=data(ijk2,0);
        LOGD( "This is a number from JNI: %d", fde );
    }

    Eigen::EigenSolver<Eigen::MatrixXd> es(data,true);
}

数据的数字介于-1; 1之间(我检查它确定)但是当我传递并使用此类创建对象时:

SpectralClustering* cls = new SpectralClustering(DATA, spec_vec4);

输出数据非常奇怪,它的内容大约是16058451212 .....

我想这个问题会出现在某个地方和内存中,但是当我删除它的时候也是如此。

1 个答案:

答案 0 :(得分:1)

您可以将double打印为int,因此您的代码中包含undefined behavior

您可能希望使用正确的浮点格式"%f"。参见例如this printf reference