1

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

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

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

4

2 回答 2

5

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

于 2013-10-26T11:11:31.633 回答
4

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

++i =>returns rvalue

(rvalue)++ => error

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

in c++

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

lvalue++ => Way to go! 

c++ 演示

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

于 2013-10-26T11:11:03.477 回答