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

时间:2016-01-21 17:44:29

标签: c++ decrement

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

while( (x--) > 0 )

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

第一个程序:

int main(void)
{
    int x = 10;
    while(----x>0)
   {
     cout<<x<<endl;
   }
}

输出: 8 6 4 2

第二个计划:

int main(void)
{
    int x = 10;
    while(x---->0)
   {
     cout<<x<<endl;
   }
}

我收到了编译错误:

  

左值作为递减操作数

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

1 个答案:

答案 0 :(得分:15)

--x的结果是左值,您可以再次向--申请--(--x)

x--的结果是左值,因为--需要左值,您不能(x--)--