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

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/04 04:10:11
为什么表达式 (a++) += (a++); 错误,而 (++a) += (a++); 正确

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