[Quote=引用 2 楼 pathuang68 的回复:]
就是这样的。
++a用的是a的引用,因此可以作为左值
a++用的是对象拷贝,一次不能作为左值
这也是为什么在for循环中,++i比i++快的原因,当然如果编译器对此做了专门的优化的话,那么从性能上来说是没有区别的。
[/Quote]
在C语言中,++a,a++都是右值表达式。=号左操作数要求是左值表达式,所以两者都是错的。
但是在C++中,++a是右值表达式。所以在C++中符合语法。
c++03标准是未定义行为,c++11标准不是未定义的。