GMP:禁止自我指派吗?

cjg*_*com 3 c gmp

我在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
Run Code Online (Sandbox Code Playgroud)

这种用法是允许的,还是应该只分配给第三个变量?

Grz*_*ski 7

这样的自我分配没有任何问题.事实上,文档陈述正好相反.根据3.4 变量约定:

GMP允许您在一次调用中对输入和输出使用相同的变量.例如,整数乘法的主函数mpz_mul可用于平方x并将结果放回x中

 mpz_mul (x, x, x);
Run Code Online (Sandbox Code Playgroud)