神秘的 for 循环语句
Cryptic for-loop statement
我正在查看一些开源软件,他们以与我看到的不同方式使用 for 循环/运算符,我想知道是否有人可以告诉我它在用英语做什么。我相信开源是 C 语言,也许是C++,不确定它是否有区别,但我正在C++工作。
给出的 for 循环是,TSTEP=60,tt 和 t 只是双精度变量
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;
使用括号可能更容易阅读:
tt = (t < 0.0 ? -TSTEP : TSTEP);
在英语中,这是"如果t
小于0.0
,则-TSTEP
分配给tt
,否则将TSTEP
分配给tt
"。如果以前未见过此语法,请查找三元运算符。
我想?:
运算符是让你感到困惑的地方。循环本身沿 t 方向向 0 移动 tt(60) 步长,直到 t 几乎为 0,与t
从一开始就是正数还是负数无关。 lvalue = (expr ? a : b)
是
if (expr) {
lvalue = a;
} else {
lvalue = b;
}
相关文章:
- 当调用switch语句中的函数时(即使函数不包含循环),似乎是永不结束的循环的问题
- 如果 else 语句不断循环
- do while 循环中的 if 语句以 yes 或 no 结尾
- 带有开关语句的 do-while 循环 -- 无穷循环错误
- 如果语句不会在 do - while 循环中运行
- 有没有办法在循环中的条件至少满足一次时运行语句?
- 什么可以用来替换代码中的循环和 if 语句?
- C++ 访问 if 语句(如果它们在 for 循环中)
- for 循环后的分号是什么意思?为什么第一个循环语句中有 j++
- 这段代码如何在没有任何循环语句或'goto'或递归的情况下循环?
- 终端不阅读循环语句
- 我的值不断增加,而不是在循环语句中重置
- 此 for 循环语句的正确语法
- 神秘的 for 循环语句
- do 循环语句导致无限循环
- 嵌套循环语句结果不正确
- 在 FOR 循环语句的条件部分中使用声明
- 构造长循环语句是一种好的做法吗
- 在条件C++循环语句中向SQLite3表中插入条目
- 循环语句警告的冒泡排序算法