java a=a++;b=a++;为什么值不一样

classK{publicstaticvoidmain(Stringargs[]){inta=1;intb=2;a=a++;//b=a++;System.out.prin... class K
{
public static void main(String args[]) {

int a =1;
int b =2;
a=a++;
// b=a++;
System.out.println(a); //输出1
// System.out.println(b); //取消7.9行注释,注释掉6.8行,输出2
}
}

为什么b不是1?
展开
 我来答
啸天孤狼_2011
2013-09-01 · 超过13用户采纳过TA的回答
知道答主
回答量:34
采纳率:0%
帮助的人:22.2万
展开全部
a初始值为1,然后a = a++ 这条语句的意思是先使用a的值1,用完后让a值加1赋给a,那么运行完这句话后a的值为2了,在运行b=a++这句话的时候,先使用2,然后再加1,运行完后a的值为3。a++的意思是先使用值再加1,++a的意思是先加1再使用。
scmikezhang
2018-10-29
知道答主
回答量:3
采纳率:0%
帮助的人:2.3万
展开全部
假设a = 5,a=a++和b=a++,最后a、b的值都是5。虽然a++的时候a的值是6,但是“a++”这个表达式的“值”是5,因此将它赋值给a和b之后,a和b的值都会是5;
而“++a”这个表达式的值和++a时a本身的值都是6,所以如果是a=++a或者b=++a,a、b的值都会是6。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
虚之源
2013-09-01 · TA获得超过313个赞
知道小有建树答主
回答量:484
采纳率:50%
帮助的人:187万
展开全部
怎么可能输出b不是1,如果b=a++,那么 b肯定等于1的。你仔细看看吧。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dida时代
2013-09-01
知道答主
回答量:23
采纳率:25%
帮助的人:10.5万
展开全部
取消7.9行注释,注释掉6.8行,输出一定是1。再仔细检查一下代码
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ht20102010
2013-09-01
知道答主
回答量:14
采纳率:0%
帮助的人:11.4万
展开全部
a ++ 指先赋值再自加; ++a指先自加再赋值
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式