此问题和回答均来源于技术问答,觉得很受教,记录下来,向两位表示感谢,就不@了。
题目:
int res=0;
for(int i=0;i<10;i++){
res+=res++;
}
res = ?
解析:
//这是代码上等价写法 res=res+(res++); //这是内存上等价写法 int temp=res=0;//在内存temp中保存原始值,从此res++之前的res都是通过temp操作 res=res+1;//随即进行res++操作,这时是有赋值的,要不 i++那样的操作如何自增 res=temp+temp;//这时,使用原始值进行第一个+操作,++操作自增的1被覆盖。 //再看这个例子,这是代码写法 res=(res++)+res; //这是内存上等价写法 int temp=res=0;//跟上面一样,但res++之后的res是++操作之后的值 res=res+1;//跟上面一样 res=temp+res;//结果为1