小编use*_*710的帖子

Java如何反转BigInteger?

我需要反转一个BigInteger.

让我说我有 BigInteger x;,我需要计算x.modPow(new BigInteger("-1"), p).

我收到以下错误: java.lang.ArithmeticException: BigInteger not invertible.

java biginteger

5
推荐指数
1
解决办法
5976
查看次数

C++ nonconst-const引用函数重载

在以下代码中:

int foo(const int& f) //version 1
{
    int g = f;
    return int(foo(g)); // calls itself, turning into SO
}

int& foo(int& f) //version 2
{
    f *= -1;
    return f;
}

int main()
{
    int f = 11;
    cout << foo(f) << endl;
    cout << foo(22) << endl;
}
Run Code Online (Sandbox Code Playgroud)

第一个cout按预期打印-11; f是一个左值,所以它绑定到foo的第二个版本(虽然它也可以绑定到第一个版本,第二个版本它是一个更好的匹配).

第二个调用foo是使用rvalue作为参数,因此唯一可行的版本foo是第一个.到现在为止还挺好.在第一个版本中foo,我制作了参数的副本,因此我可以调用第二个版本(带左值)并在调用第二个版本之后返回它的副本foo.事情是这会变成堆栈溢出; 仍然foo会调用第一个版本.

有人可以向我解释为什么会这样吗?我希望g在第一个版本中foo绑定到foo作为参数传递的第二个版本.

c++ g++ pass-by-reference rvalue lvalue

5
推荐指数
1
解决办法
108
查看次数

标签 统计

biginteger ×1

c++ ×1

g++ ×1

java ×1

lvalue ×1

pass-by-reference ×1

rvalue ×1