public class Test {
static int i = 0;
/**
* Method main
* int i = 0;
*
* @param args
*
*/
public static void main(String[] args) {
//int i = 0;
i = i++;
System.out.println(i);
i = i++;
i = i++;
System.out.println(i++);
// TODO: Add your code here
}
}
i的输出为什么是0??????
int tmp = i;
i = i + 1;
i = tmp;
前缀 与 后缀 都分不清?
{
return i+1;
}int operator ++ (int flag)//后置操作符
{
int j = i;
i += 1;
return j;
}
i++,做i= i + 1 动作,但整个expression的值(返回值)是自加前的变量值;
而++i做同样的动作,返回自加后的变量值;
对于赋值运算,其优先级低于自加运算,所以
i = i++;
也就是:
i = (i++);
即右边表达式中,i自加了,值成了1,但整个表达式会返回0,0再赋值给i, 这样i的值 又成了0;
如此下面的都同理。
你说的地球人都知道,不要自以为是