对于一个学校项目,我必须做一些涉及大量数字的计算,这就是为什么我选择使用GMP的原因。在主程序中遇到奇怪的错误后,我开始尝试另一个程序。以下代码显示了出了什么问题:

mpf_set_default_prec(512);
mpf_t t[5];
mpf_init(t[5]);
cout << "This does appear." << endl;
mpf_set_ui(t[4],9);
cout << mpf_get_d(t[4]) << endl;
cout << "This does not, neither is the number 9 printed." << endl;
mpf_clear(t[5]);


因此,所有输出在mpf_set_ui之后停止。如果我在没有数组的情况下尝试此操作,那么t [5]和t [4]变为t,则一切都会按预期进行。我究竟做错了什么? GMP实际上允许使用数组吗?

最佳答案

您可能应该如下更改代码

mpf_t t[5];
for(int i = 0; i < 5; ++i) {
    mpf_init(t[i]);
}

mpf_set_ui(t[4],9);
cout << mpf_get_d(t[4]) << endl;

for(int i = 0; i < 5; ++i) {
    mpf_clear(t[i]);
}

关于c++ - 在浮点数组上使用mpf_set_ui会停止输出(GMP C++),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26560839/

10-12 16:10