关于 - >在c ++中的困惑?

Set*_*sak 0 c++ decrement

我知道那-->不是运营商.它实际上是两个独立的运算符-->.它与下面的操作相同.

while( (x--) > 0 )
Run Code Online (Sandbox Code Playgroud)

现在我运行了两个程序,但它在我身上引起了一些困惑.

第一个计划:

int main(void)
{
    int x = 10;
    while(----x>0)
   {
     cout<<x<<endl;
   }
}
Run Code Online (Sandbox Code Playgroud)

产出: 8 6 4 2

第二个程序:

int main(void)
{
    int x = 10;
    while(x---->0)
   {
     cout<<x<<endl;
   }
}
Run Code Online (Sandbox Code Playgroud)

我有编译错误:

lvalue需要作为递减操作数

其实这里发生了什么?为什么第一个程序运行成功而不是第二个程序?

Ben*_*igt 15

结果--x是左值,你可以--再次申请:--(--x).

结果x--是一个右值,因为--需要一个左值,你做不到(x--)--.

  • 定期编写看起来像`---- x> 0`的代码的结果是寻找新的工作;) (10认同)