算术评估部分列出了以下运算符:
id++ id--
variable post-increment and post-decrement
++id --id
variable pre-increment and pre-decrement
据我了解,++x
和--xx
在执行其他操作之前增加或减少变量?例如x++
:
$ x=5; echo $(( ++x / 2 ))
3
$ x=5; echo $(( x++ / 2 ))
2
$
但是,x++
和x--
何时有用?一般来说,bash中的变量后递增/递减和预递增/递减之间的区别是什么?
答案 0 :(得分:1)
引自Increment and decrement operators:
在支持两种版本的运算符的语言中, pre -increment和 pre -decrement运算符将其操作数递增(或递减)1,表达式的值为结果 递增(或递减)值。相反,帖子 - 增量 和 post -decrement运算符增加(或减少)的值 它们的操作数为1,但表达式的值是操作数 原始值先前到增量(或减量)操作。
所以,你会发现:
$ x=5; echo $(( x++ / 2 ))
2
$ echo ${x} // The effect of post-increment is visible here
3
答案 1 :(得分:1)
操作后和操作前都改变(增加/减少)变量值。
不同之处在于他们评估的内容:pre-ops在更改之后评估变量的值,并且在操作之后 - 在更改之前评估值
当未使用评估值时,没有区别。即这两行具有相同的效果:
((x++))
((++x))
pre-ops和post-ops都用于消除显式赋值的需要。即使代码更短。所以,而不是写这个:
x=$((x + 1))
y=$((x * 5))
你可以这样写:
y=$((++x * 5))
相反,而不是:
y=$((x * 5))
x=$((x + 1))
你可以这样写:
y=$((x++ * 5))
这些操作通常用在循环体和循环控制表达式中。