在下面的代码段中,我希望答案为5,但它显示编译时错误:
#include <stdio.h>
int main()
{
int i = 4;
printf("%d", (++i)++);
return 0;
}
是什么原因?这里++i
返回一个l值,所以我们可以增加它吗?
答案 0 :(得分:5)
(++ i)返回一个右值。这不能增加。
答案 1 :(得分:4)
postincrement\decrement
或preincrement\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!
即使它正在工作,也是undefined behavior
。您不应在同一语句中多次修改同一变量。