++x和x++有什么区别?

 我来答
立哥讲历史
2018-07-08 · TA获得超过1万个赞
知道小有建树答主
回答量:456
采纳率:100%
帮助的人:54.2万
展开全部

首先,两个操作都是自增操作,都只能对变量进行该操作,但是两种自增有些许区别

  • ++x  先将x的值自增1,然后再在当前表达式中使用x的值

  • x++  先在当前表达式中使用x的值,然后再将x的值自增1


资料拓展

关于两者区别的举例

(1)

int x=1;

System.out.println(x++);    //输出1,  x++先在当前表达式中使用x的值,然后再将x的值自增1

System.out.println(x);     //输出2,经过上一条指令x自增了1

(2)

int x=1;

System.out.println(++x);    //输出2,  ++x 先将x的值自增1,然后再在当前表达式中使用x的值

System.out.println(x);     //输出2,经过上一条指令x自增了1

关于两者的步骤

x++实际上分为三个步骤

取值,计算,赋值

例如x=1,x++, 

实际上JVM定义了一个缓存值y   

步骤① y=x;取值(只运算一次)    

步骤②   y=y+1;计算             

步骤③   x=y;赋值               

-------------      

而++x,步骤不一样,

① y=x;取值(只运算一次)        

② x=y;赋值        

③y=y+1;计算                  

>>手机不能换行,慕课网的工程师好渣渣>>>>>>        

这就是书上说的x++是先计算后赋值 ++x是先赋值后计算        

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小男孩白鲨
2019-05-29
知道答主
回答量:8
采纳率:0%
帮助的人:1.8万
展开全部
X++是先取值再自增
++X是先自增再取值
这种写法的效率和X=X+1 ; X+=1; 相比是最高效的,直接取X的内存地址 然后自增。效率最低的是X=X+1 需要先取右侧X的地址,然后+1 再去左侧X地址,将右值传递给左值(编译器不知道两个X是同一个X)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式