我正在看一些开源软件,他们以不同的方式使用for循环/运算符,然后我看到了,我想知道是否有人可以告诉我它用英语做了什么。 我相信开源是C语言,也许是C ++,不确定它是否有所作为,但我在C ++中工作。
给出的for循环是,TSTEP = 60,tt和t只是双变量
for (tt=t<0.0?-TSTEP:TSTEP;fabs(t)>1E-9;t-=tt)
答案 0 :(得分:5)
if(t < 0)
tt = -TSTEP;
else
tt = TSTEP;
for(; fabs(t) > 1E-9; t -= tt)
希望这足以破译
答案 1 :(得分:2)
这肯定是丑陋的代码,但实际上唯一令人困惑的部分是for
语句的第一部分:
tt=t<0.0?-TSTEP:TSTEP;
用括号阅读可能更容易:
tt = (t < 0.0 ? -TSTEP : TSTEP);
在英语中,这是“如果t
小于0.0
,请将-TSTEP
分配给tt
,否则将TSTEP
分配给tt
”。如果您之前没有看过这种语法,请查看ternary operator。
答案 2 :(得分:1)
我想?:
运算符让你感到困惑。循环本身在朝向0的方向上改变t t(60)步,直到t几乎为0,独立于if t
从开始是正还是负。
lvalue = (expr ? a : b)
是
if (expr) {
lvalue = a;
} else {
lvalue = b;
}