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

来源:学生作业帮助网 编辑:作业帮 时间:2024/07/30 01:44:06
为什么表达式 (a++) += (a++); 错误,而 (++a) += (a++); 正确
xN*1_e.53x-.D adTPt*6x23|s+f&Z4J0cCF6ciTԐVIuc__-'M%b W)s,InQW#-Fu9ײR{`ظ[wAQ$G˩(nⰏvlr2eVSqs^2kdPTpDb?_B= s+`WmwcuW

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