为什么表达式 (a++) += (a++); 错误,而 (++a) += (a++); 正确
问题描述:
为什么表达式 (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++要产生临时变量.
建议lz在网上找一些左值和右值的知识来看看,这也不是一两句话讲清的,理解这个对你有很大的帮助.