为何a++不可以作为左值而++a能

 a++的运算结果并不是a这个变量的引用,而是一个临时变量,其值为i的值,所以你无法进行以下运算:   
  a++=5;   甚至编译器不允许你对一个临时变量重新赋值,上面的表达式会引起编译错误   。

左值,说得通俗一点,就是可以出现在表达式左边的值(等号左边),可以被改变。

 

可以简单的这么理解(通过C++语法)
你看看前、后++分别是怎样重载的
比如A类中重载两个++吧
A& operator ++ ()
{
++ A.data;
return A;
}

A& operator ++ (int)
{
temp = A.data;
++ A.data;
return temp;
}

后一个是后++
返回的是一个临时变量
当然不能做左值啊

 

++a返回的是a的引用..
a++返回的一个临时变量的引用..

你可能感兴趣的:(c语言基础知识)