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