GMP:是否禁止自我分配?
GMP: Are self-assignments forbidden?
我在 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
是否允许这种用法,或者我应该只求助于分配给第三个变量?
这样的自我赋值并没有错。事实上,documentation 的说法恰恰相反。根据 3.4 变量约定:
GMP lets you use the same variable for both input and output in one
call. For example, the main function for integer multiplication,
mpz_mul, can be used to square x and put the result back in x with
mpz_mul (x, x, x);
我在 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
是否允许这种用法,或者我应该只求助于分配给第三个变量?
这样的自我赋值并没有错。事实上,documentation 的说法恰恰相反。根据 3.4 变量约定:
GMP lets you use the same variable for both input and output in one call. For example, the main function for integer multiplication, mpz_mul, can be used to square x and put the result back in x with
mpz_mul (x, x, x);