预增量变量(++ i)++的后增量出错?

时间:2013-10-26 11:08:50

标签: c

在下面的代码段中,我希望答案为5,但它显示编译时错误:

#include <stdio.h>
int main()
{
    int i = 4;
    printf("%d", (++i)++);
    return 0;
}

是什么原因?这里++i返回一个l值,所以我们可以增加它吗?

2 个答案:

答案 0 :(得分:5)

(++ i)返回一个右值。这不能增加。

答案 1 :(得分:4)

postincrement\decrementpreincrement\decrement需要lvalue并返回rvalue。这就是你收到错误的原因。

++i =>returns rvalue

(rvalue)++ => error

在c ++中,由于reference类型,情况有所不同。在c中,我们没有reference类型。

in c++

++i => returns reference to i that is lvalue.

lvalue++ => Way to go! 

Demo for c++

即使它正在工作,也是undefined behavior。您不应在同一语句中多次修改同一变量。