我是一个试图从 C++ 代码中理解算法的新手,之后我想在 java 中实现它,但我发现理解代码有困难,这里有 3 段代码让我感到困惑
inline Edge *Node::NextEdge( Edge *prev)
{
for (int i = 0; i < 4; i++)
prev = (Edge *) ( (int) prev ^ (int) edge[i] );
return prev;
}
// _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ ___
if (nextfrag)
{
if ( --nextfrag->degree)
new_frag( nextfrag, fragnum, len, edge );
// _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ ___
for (pedge = edge; pedge->parent; pedge = pedge->parent);
我对第一个代码的问题:迭代如何在按位异或运算中工作?什么prev = (Edge *) ( (int) prev ^ (int) edge[i] );
意思?return 的价值是prev
多少?
第二个代码的问题:减少运算符如何if ( --nextfrag->degree)
在 if 语句中工作?
第三个代码:有没有其他方法可以编写该 for 语句?请向我解释一下 for 语句的意思,因为作为一个新手,我只是习惯于 i= 0; 我=某事;我++
抱歉这个愚蠢的问题,但你的解释会对我有很大帮助,在此先感谢:)