cout<<(x++)++; //fails
cout<<++(++x); //passes
为什么帖子增量失败?我看到它发生但不确定技术原因。
答案 0 :(得分:13)
x++
会返回右值,因此您无法再次执行++
。另一方面,++x
会返回左值,以便您可以对其执行++
。
答案 1 :(得分:4)
这是增量运算符在C / C ++中的工作方式。
如果将++
放在变量之后(后缀增量),整个表达式将在递增之前计算变量的值。
如果将++
放在变量(前缀增量)之前,表达式将计算增量操作后的值。
当前缀操作返回对传递的变量的引用时,后缀版本返回一个临时值,该值不得递增。
答案 2 :(得分:1)
完全。你不能在Rvalue上执行++。关于rvalue如何工作的一个很好的解释是here。