我一直在尝试阅读C ++代码,并且想知道是否有人可以提供帮助。 因此,是代码段:
bool res;
if(res=(D<0)) {u2_=u2= C>0 ? atan2(A,B) : atan2(-A,-B); D=0;}
else
{
D = sqrt(D);
const realfp err = M*y1_+N*x1_-data.K*y1_*x1_;
const realfp err_= M*y2_+N*x2_-data.K*y2_*x2_;
if(fabs(err)<fabs(err_)) {
u2 = atan2(y1_, x1_);
u2_= atan2(y2_, x2_);}
else {
u2_= atan2(y1_, x1_);
u2 = atan2(y2_, x2_);}
}
等同于:
res = D < 0;
if (res) {
if (C > 0) {
u2_ = u2 = atan(A, B);
} else {
u2_ = u2 = atan2(-A, -B);
}
D = 0;
} else {
D = sqrt(D);
const realfp err = M*y1_+N*x1_-data.K*y1_*x1_;
const realfp err_ = M*y2_+N*x2_-data.K*y2_*x2_;
if (fabs(err) < fabs(err_)) {
u2 = atan2(y1_, x1_);
u2_= atan2(y2_, x2_);
} else {
u2_= atan2(y1_, x1_);
u2 = atan2(y2_, x2_);
}
}
我要问的原因是因为我对条件if(res=(D<0)) {u2_=u2= C>0 ? atan2(A,B) : atan2(-A,-B); D=0;}
感到困惑
我了解它可以检查D <0,但不能跟随后缀,尤其是{u2_=u2= C>0 ? atan2(A,B) : atan2(-A,-B); D=0;}
部分。
实际上,如果您可以将if condition
转换为python或Fortran,那就太好了。
任何帮助将不胜感激!
答案 0 :(得分:1)
行
{u2_=u2= C>0 ? atan2(A,B) : atan2(-A,-B); D=0;}
可以翻译为:
if (C >0) {
u2_ = u2 = atan2(A,B);
}
else {
u2_ = u2 = atan2(-A,-B);
}
D=0;