2013-06-13 29 views
0

算術求部分在bash手冊列出:bash中的變量post-increment/decrement和pre-increment/decrement之間有什麼區別?以下等運營商

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中變量後期增加/減少和前期增加/減少之間的區別是什麼?

+4

您已經確定了區別,那麼這裏有什麼問題? –

回答

1

Increment and decrement operators引用:

在支持運營商的兩個版本語言中, -Increment和 -decrement運營遞增(或遞減)的操作數由1,和表達式的值是生成的 遞增(或遞減)值。與此相反,張貼 -Increment 和 -decrement運營商增加(或減少)由1 其操作數的值,但表達的值是操作數的 原始值之前到增量(或減量)操作。

所以,你會發現:

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

兩個後OPS和預OPS改變變量(增加/減少)值。

所不同的是,他們評估什麼:預評估OPS的變量改變後的值,和後OPS -,在更改前值

當評估值未被使用時,沒有差異。即這兩條線有同樣的效果:

((x++)) 
((++x)) 

兩個預OPS和post-OPS用於去除一個明確分配的需要。即縮短代碼。所以,不要寫成這樣:相反

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

,而不是這個:

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

你可以這樣寫

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

你可以這樣寫:

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

這些操作通常用在循環體中d循環控制表達式。

相關問題