huoxiangdong / Blog

学习记录
0 stars 0 forks source link

i++ & ++i #59

Open huoxiangdong opened 6 years ago

huoxiangdong commented 6 years ago

int a; 
a=i++;//将i的值赋值给a,即a=i;然后再执行i=i+1;
也就是【a=i++;】与【a=i; i=i+1;】等价。
a=++i;//将i+1的值赋给a,即a=i+1;然后再执行i=i+1;
也就是【a=++i;】与【a=i+1;i=i+1;】等价。
huoxiangdong commented 6 years ago

①前置++是将自身加1的值赋值给新变量,同时自身也加1; ②后置++是将自身的值赋给新变量,然后才自身加1.

huoxiangdong commented 6 years ago

左值是对应内存中有确定存储地址的对象的表达式的值,而右值是所有不是左值的表达式的值。

一般来说,左值是可以放到赋值符号左边的变量。但 能否被赋值不是区分左值与右值的依据。比如,C++的const左值是不可赋值的;而作为临时对象的右值可能允许被赋值。左值与右值的根本区别在于是否允许取地址&运算符获得对应的内存地址。

huoxiangdong commented 6 years ago

i++ 最后返回的是一个临时变量,而临时变量是右值