-1

那是什么意思?

e[i] == "-" && (s > 1 || d === null) && ++s, !s && d !== null && (p.push(e[i]), s = 2), "+-".indexOf(e[i]) < (d = null) && (c = 1);

没有任何逻辑就看不懂这么多的sumbols

4

2 回答 2

2
if (e[i] == "-" && (s > 1 || d === null))
    ++s;

if (!s && d !== null) {
    p.push(e[i]);
    s = 2;
}

if ("+-".indexOf(e[i]) < (d = null))
    c = 1;

如果你没有 C 背景,最后的作业if可能对你没有吸引力;在这种情况下:

d = null;
if ("+-".indexOf(e[i]) < null)
    c = 1;
于 2012-05-06T14:10:33.380 回答
1

尝试添加一些空格和换行符:

e[i] == "-" && (s > 1 || d === null) && ++s,
    !s && d !== null && (p.push(e[i]), s = 2),
    "+-".indexOf(e[i]) < (d = null) && (c = 1);

请注意,这是一个逗号表达式 - 它是由逗号分隔的 3 个表达式。每个表达式实际上是一个语句

condition && action;

由于这种工作方式,您可以在 C 中摆脱这种情况&&。对于表达式A && B,首先执行 A,只有当 A 的结果为真时才执行 B。所以就A && B;可以自己翻译成if(A) B;. 当然,这仅在A && B不使用整个表达式的结果时才有效。

于 2012-05-06T13:58:18.923 回答