今天看到一道题 挺有意思:
题目
int a = 0;
for (int i = 0; i < 99; i++) {
a = a ++;
}
System.out.println(a);
int a = 0;
int b = 0;
for(int i = 0; i < 99; i++){
b = a++;
}
System.out.println(b);
int a = 0;
int c = 0;
for(int i = 0; i < 99; i++){
c = ++a;
}
System.out.println(c);
答案:
a=0;
b=98;
c=99;
解析
b和c容易理解,关键是a我考虑了半天,为什么等于0,要明白下,b=a++这个过程:
1.取出a的值,放在一个临时变量里(int temp = a)
2.将a的值加1(a=a+1)
3.将临时变量的值赋给b(int b = temp)
同理可以理解a = a++这个过程:
1.取出a的值,放在一个临时变量里(int temp = a)此时a的值为0
2.将a的值加1(a=a+1)此时a的值为1
3.将临时变量的值赋给a(int a = temp)因为临时变量的值是0,所以a又成了0
这就是为什么a输出是0;
ps:
b = ++a的过程:
1.将a的值加1;
2.将a的值赋给b;