我怀疑这是故意的(而不仅仅是一个错误)。如果是这样,请指导我查看相关文档以获取理由。
~$ i=0; ((i++)) && echo true || echo false
false
~$ i=1; ((i++)) && echo true || echo false
true
这两行之间的唯一区别是i=0
vs i=1
。
我怀疑这是故意的(而不仅仅是一个错误)。如果是这样,请指导我查看相关文档以获取理由。
~$ i=0; ((i++)) && echo true || echo false
false
~$ i=1; ((i++)) && echo true || echo false
true
这两行之间的唯一区别是i=0
vs i=1
。
这是因为
i++
确实 进行了 post-increment,如 中所述man bash
。这意味着表达式的值是 的原始值i
,而不是增量值。以便:
行为像:
除了
i
也增加了;然后:行为像:
除了这
i
也增加了。如果值非零,则构造的返回值
(( ))
是truthy (0
),反之亦然。您还可以测试后增量运算符是如何工作的:
和预增量进行比较:
an 的“返回”值
((expression))
取决于前缀或后缀。然后逻辑是这样的:这意味着它被转为正常,而不是像返回值。