bash中变量后递增/递减和前递增/递减之间有什么区别?

bash中变量后递增/递减和前递增/递减之间有什么区别?,bash,Bash,bash手册中的算术计算部分列出了以下操作符: 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

bash手册中的算术计算部分列出了以下操作符:

   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中变量后增量/减量和前增量/减量之间有什么区别?

引用:

在支持两个版本的运算符的语言中 预递增和预递减运算符将其操作数递增(或递减)1,表达式的值就是结果 递增(或递减)值。相比之下,员额增加 和后减量运算符增加(或减少)的值 它们的操作数乘以1,但表达式的值是操作数的值 递增(或递减)操作之前的原始值

因此,您将发现:

$ x=5; echo $(( x++ / 2 ))
2
$ echo ${x}                     // The effect of post-increment is visible here
3

操作后和操作前都会更改变量的值(增加/减少)

不同之处在于它们的计算结果:操作前的计算结果为更改后的变量值,操作后的计算结果为更改前的值

如果未使用评估值,则没有差异。即,这两条线具有相同的效果:

((x++))
((++x))
操作前和操作后都用于消除显式分配的需要。也就是说,缩短代码。因此,与其写这封信:

x=$((x + 1))
y=$((x * 5))
你可以这样写:

y=$((++x * 5))
y=$((x++ * 5))
相反,与此相反:

y=$((x * 5))
x=$((x + 1))
你可以这样写:

y=$((++x * 5))
y=$((x++ * 5))

这些操作通常在循环体和循环控制表达式中使用。

您已经确定了差异,那么这里的问题是什么?