我正在看一些开源软件,他们以不同的方式使用for循环/运算符,然后我看到了,我在想如果有人能告诉我它在做什么英语。 我相信开源是在C,也许C++,不知道它是否有所作为,但我在C++工作。神秘的for-loop语句
for循环给出的是,TSTEP = 60,TT和T只是double变量
for (tt=t<0.0?-TSTEP:TSTEP;fabs(t)>1E-9;t-=tt)
我正在看一些开源软件,他们以不同的方式使用for循环/运算符,然后我看到了,我在想如果有人能告诉我它在做什么英语。 我相信开源是在C,也许C++,不知道它是否有所作为,但我在C++工作。神秘的for-loop语句
for循环给出的是,TSTEP = 60,TT和T只是double变量
for (tt=t<0.0?-TSTEP:TSTEP;fabs(t)>1E-9;t-=tt)
if(t < 0)
tt = -TSTEP;
else
tt = TSTEP;
for(; fabs(t) > 1E-9; t -= tt)
希望这是破译足够
这当然是丑陋的代码,但实际上只有混乱部分是for
声明的第一部分:
tt=t<0.0?-TSTEP:TSTEP;
It mig HT更容易与支架阅读:
tt = (t < 0.0 ? -TSTEP : TSTEP);
在英文中,这是“如果t
小于0.0
,分配给-TSTEP
tt
,以其他方式转让给TSTEP
tt
”。如果你以前没有看过这个语法,请查看ternary operator。
我猜?:
运算符是什么令你困惑。循环本身在朝向0的方向上以tt(60)的步长改变t,直到t几乎为0,这与从开始时的t
是正数还是负数无关。 lvalue = (expr ? a : b)
是
if (expr) {
lvalue = a;
} else {
lvalue = b;
}
共同速记我不知道是什么原因造成的downvotes。标题虽然不是很具描述性。 –
我认为你不理解的部分是这样的:http://en.wikipedia.org/wiki/%3F: –