我在C中使用GMP库获得任意精确度。我所见过的所有用法示例似乎都避免了自我分配,例如:
Syntax : void mpz_add (mpz_t rop, const mpz_t op1, const mpz_t op2)
mpz_add(a, a, b); // Assign a+b to a
是允许使用这种用法还是仅用于分配给第三个变量?
答案 0 :(得分:7)
这样的自我分配没有任何问题。事实上,documentation状态正好相反。根据3.4 变量约定:
GMP允许您在一个输入和输出中使用相同的变量 呼叫。例如,整数乘法的主要功能, mpz_mul,可用于平方x并将结果放回x中
mpz_mul (x, x, x);