为什么表达式 (a++) += (a++);错误,而 (++a) += (a++);正确

其实这是一个很深邃的问题.在c/c++中规定:左操作数必须是一个左值.
a++在c/c++中的实现是:
{
int tmp=a;
a=a+1;
return tmp;
}
这里的tmp为一个临时变量,是一个右值,对它赋值毫无意义.
++a在c/c++中的实现是:
{
a=a+1;
return a;
}
a为一个左值,可以赋值.
就效率而言++a应比a++的效率要高,因为a++要产生临时变量.

posted @ 2020-10-13 23:31  Wangtn  阅读(624)  评论(0编辑  收藏  举报