2013-12-19 38 views
-3

我正在看一些开源软件,他们以不同的方式使用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) 
+0

共同速记我不知道是什么原因造成的downvotes。标题虽然不是很具描述性。 –

+0

我认为你不理解的部分是这样的:http://en.wikipedia.org/wiki/%3F: –

回答

5
if(t < 0) 
     tt = -TSTEP; 
    else 
     tt = TSTEP; 

    for(; fabs(t) > 1E-9; t -= tt) 

希望这是破译足够

2

这当然是丑陋的代码,但实际上只有混乱部分是for声明的第一部分:

tt=t<0.0?-TSTEP:TSTEP; 

It mig HT更容易与支架阅读:

tt = (t < 0.0 ? -TSTEP : TSTEP); 

在英文中,这是“如果t小于0.0,分配给-TSTEPtt,以其他方式转让给TSTEPtt”。如果你以前没有看过这个语法,请查看ternary operator

1

我猜?:运算符是什么令你困惑。循环本身在朝向0的方向上以tt(60)的步长改变t,直到t几乎为0,这与从开始时的t是正数还是负数无关。 lvalue = (expr ? a : b)

if (expr) { 
    lvalue = a; 
} else { 
    lvalue = b; 
}