这种不同是因为在c语言中,每个变量在它的生命周期内的每个时间点都只能有一个唯一的值。因此变量在每一次自增运算时,变量所对应内存区域的内容就被重写了。
而在java中,执行sum1=(i++)+(i++);创建了2个临时的整型变量对象,对来存储每次自增运算的结果。
java采用了这种中间缓存变量的机制
#include <stdio.h> #include <iostream> using namespace std; int main() { int i=0; int sum=(i++)+(i++); cout<<"i="<<i<<" sum="<<sum<<endl; i=0; for (int j=0;j<100;j++) { i=i++; } cout<<i<<endl; return 0; }
result:i=2; sum=0;
public class TestClass3 { public static void main(String[] args){ int j=0; for (int i = 0; i < 100; i++) { j=j++; } int sum=(j++)+(j++); System.out.println(sum); System.out.println(j); } }
result: sum=1;j=2
Java的中间变量缓存机制
tmp=j;
j=j+1;
j=tmp;