bash中变量后递增/递减和前递增/递减之间有什么区别?
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
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))
这些操作通常在循环体和循环控制表达式中使用。您已经确定了差异,那么这里的问题是什么?