对于一个学校项目,我必须做一些涉及大数字的计算,这就是我选择使用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中是否允许使用数组?
答案 0 :(得分:2)
您应该按照以下方式更改代码
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]);
}