黑马程序员技术交流社区

标题: 有关a++的问题,求解答 [打印本页]

作者: 李金伦    时间: 2015-7-2 23:04
标题: 有关a++的问题,求解答
class Test
{
    public static void main(String[] args)
    {
         int a = 1;
           a = a++;
        System.out.println(a);
    }
}
为什么打印的结果是1,而不是2?求解答
作者: muzili    时间: 2015-7-2 23:30
a++返回一个1,1又赋给了a。 弄清楚a++和++a的区别
作者: 杨基米德    时间: 2015-7-3 07:51
后++是先执行操作,再+1
作者: 水壶vs兔子    时间: 2015-7-3 16:44
好像记得赋值跟等号左右也有关系吧。
作者: 慕容旺财    时间: 2015-7-3 18:23
两种自增a++和++a都表示a=a+1 但其与赋值运算的优先级的关系不同 运算优先级a++小于赋值 ++a大于赋值 也就是说 a=a++的话 是先赋值 再自增 a=++a的话 是先自增 再赋值
作者: rdzhang1010    时间: 2015-7-3 18:33
1,先赋值,再自加
作者: 1木头1    时间: 2015-7-3 19:21
a++先赋值后自增 ++a相反
作者: EnderDBluse    时间: 2015-7-3 20:47
先赋值在加1
作者: firwood    时间: 2015-7-3 21:16
a=a++;相当于
a=a;
a++;
是将a的值先赋值给a,然后在自己增加
作者: 张恩祺    时间: 2015-7-3 21:24
a++是先实现功能在加  而++a是先加在实现功能
作者: mls123456    时间: 2015-7-7 01:39
a++是先赋值再加加,++a是先加加再赋值
作者: _Rain    时间: 2015-7-7 01:45
这里面包含了一个默认的2和1值的互换:要用到一个临时变量temp,
temp=a;
a=a+1;
a=temp;
作者: icichacici    时间: 2015-7-7 06:34
a++是先赋值,然后再加1
作者: 吃荷包蛋    时间: 2015-7-7 09:44
因为a++是先赋值再+1啊
作者: Ruby    时间: 2015-7-7 10:39
a=a++ 是先a=a然后再执行a++
作者: qq4916097    时间: 2015-7-7 11:41
答非所问  人家问答案为什么是1而不是2
什么a=a+1啊  什么先赋值再加1
拿先赋值再加1来说 int a=1;a=a;a++;
新手肯定会先认为a=a;a++ 那答案不就是2了么。。。。。。。。。。。
作者: linjian931219    时间: 2015-7-7 12:19
这就是a++和++a的区别,a++是先赋值后加1,赋值给a相当于产生了一个副本,然后你打印的也是他的副本,而不是他自加1后的值!解释的不好,希望对你有帮助
作者: 娜妞子~    时间: 2015-7-7 12:53
李金伦 发表于 2015-7-2 23:04
class Test
{
    public static void main(String[] args)

++在后是先用后执行,就是先把a的值赋给前面的变量,它自己再加一,输出的结果当然是一了,他变成二后并没有使用它




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2