自增、自减运算符分为前置和后置,前置很好理解,这里不多解释,这里只讨论后置。
1:当a++单独使用时,a++和++a是一样的。
public class Demo {
public static void main(String[] args) {
int a = 10;
a++;
System.out.println("a = "+a);
}
}
a = 11
2:当a++不是单独使用时,它是先执行再进行自增。
举个例子:
public class Demo {
public static void main(String[] args) {
int a = 10;
System.out.println(a++ + ++a); // 22
}
}
分析一下输出结果:
把“+“左边的”a++ 称作表达式1,右边的“++a”称作表达式2。
上面说过“当a++不是单独使用时,它是先执行再进行自增”。
代码中的a++是后置++,因此先用a此时的值(10)参与运算,那么表达式1的值就是10,然后a再自增,a自增后的值是11(虽然a的值变成了11,但是表达式1的值并不会改变),然后再执行“+”右边的++a,由于是前置++,因此是先自增再执行,此时a的值由之前的11变成12,这时表达式2的值就是12,表达式1+表达式2的结果就是10 + 12 = 22。
再来一个栗子:
public class Demo {
public static void main(String[] args) {
int a=1,b=1,c;
c = (a++)>b ? a++ : (b++);
System.out.println("c = "+c); //1
System.out.println("a = "+a); // 2
System.out.println("b = "+b); // 2
}
}
输出:
c = 1
a = 2
b = 2
分析:
最后一个栗子(C语言):
int main()
{
int a = 1,b = 2, c;
c = (a++,a + b++);
printf("%d\n",c);
return 0;
}
分析:
后置++懂了,后置- -也是一样的操作。
最后强调一点:不要把变量的值当成了表达式的值,变量的值可改变,但表达式的值是固定的。
///\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\/\\\\\\\\\\\