通过测试发现:
在Java语言中运行:
int i = 0;
i = i ++;
i 的值为 0;
在C语言中运行:
int i = 0;
i = i ++;
i 的值为1;
是不是很奇怪?
原因很简单:C和java对++采用的运算机制不一样!
在Java语言中:
采用中间变量机制:
例如:
i = i++;
相当于:
temp = i;
i = i + 1;
i = temp;
本质:在java中,执行自增运算时,会分配一个临时变量,
++i:就会先自加1后赋值给临时变量;
i++:就会先赋值给临时变量后自加1”;
运算最终使用的,并不是变量本身,而是被赋了值的临时变量。
在C语言中:
自增机制:
int a = 0
int i = 0;
搞清楚:a = i++ 和 i = i++;结果是不同的,为什么?
i++ 操作意味着 在返回结果之后再进行自增。
++i 操作意味着 在返回结果之前进行自增。
那么结果显而易见,a为0,那i为什么为1?
请见过程:i = i++ => i = 0, i = i+1
i = 0 是因为i++的返回值是0,进行了赋值
i = i+1 是因为 i需要自增!