首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在bash中,变量后增量/递减和前增量/递减有什么区别?

在bash中,变量后增量/递减和前增量/递减有什么区别?
EN

Stack Overflow用户
提问于 2013-06-13 09:20:39
回答 2查看 2K关注 0票数 0

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

代码语言:javascript
复制
   id++ id--
          variable post-increment and post-decrement
   ++id --id
          variable pre-increment and pre-decrement

据我所知,在执行其他操作之前,++x--xx增加或减少了变量?例如,x++

代码语言:javascript
复制
$ x=5; echo $(( ++x / 2 ))
3
$ x=5; echo $(( x++ / 2 ))
2
$ 

然而,x++x--什么时候有用?一般说来,在bash中,变量后增量/递减和前增量/递减之间有什么区别?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-13 09:26:17

引用增量和递减算子

在支持两个版本的运算符的语言中,预增量运算符和预递减运算符的操作数增加(或减少) 1,表达式的值是由此产生的递增(或递减)值。相反,后增量和后递减运算符将其操作数的值增加(或减少) 1,但表达式的值是操作数(或递减)操作之前的操作数的原始值。

所以,你会发现:

代码语言:javascript
复制
$ x=5; echo $(( x++ / 2 ))
2
$ echo ${x}                     // The effect of post-increment is visible here
3
票数 1
EN

Stack Overflow用户

发布于 2013-06-13 09:39:09

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

不同之处在于它们所评估的内容:在变化后对变量的值进行预操作评估,以及将后操作计算到更改前的值。

当未使用评估值时,没有差别。也就是说,这两条线具有相同的效果:

代码语言:javascript
复制
((x++))
((++x))

操作前和后操作都用于消除对明确分配的需要。即缩短代码。因此,与其写这篇文章:

代码语言:javascript
复制
x=$((x + 1))
y=$((x * 5))

你可以这样写:

代码语言:javascript
复制
y=$((++x * 5))

相反,与之相反的是:

代码语言:javascript
复制
y=$((x * 5))
x=$((x + 1))

你可以这样写:

代码语言:javascript
复制
y=$((x++ * 5))

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17083474

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档