#include<stdio.h>
int main(){
int i=0,j=1;
printf("%d",++(i+j));
return 0;
}
在这段代码中,我使用了增量运算符,但我不知道它为什么会抛出错误。
它抛出错误:
需要左值。
答案 0 :(得分:3)
您正在尝试增加未分配给变量的整数值。
接受您的代码,这大约是计算机尝试做的事情:
str.split()
正如您在上一版中看到的那样,您正试图致电printf("%d",++(i+j));
// expanded step 1
printf("%d",++(0+1));
// expanded step 2
printf("%d",++(1));
,这是无效的。
为了使用++1
递增值,操作数必须具有整数,浮点或指针类型,并且必须是可修改的l值表达式(不带const属性的表达式):
++
或者,您可以使用加法运算符:
int x = i+j;
printf("%d",++x);
答案 1 :(得分:0)
在C中,您不能同时应用一元运算符。首先评估肠胃外检查之间的值...在使用一元手术之前。将结果分配给变量。
#include<stdio.h>
int main(){
int i=0,j=1, other_value=0;
other_value = i+j;
printf("%d",++(other_value));
return 0;
}
您的普通代码将起作用将收到错误
error: lvalue required as increment operand
答案 2 :(得分:0)
你不能递增结果。
相反:
printf("%d",i + j + 1);
答案 3 :(得分:0)
“左值”是可以作为赋值目标的值。 “l”代表“左”,如等号的左侧。右值是右手值并产生一个值,不能直接分配。如果你得到“左值”,你有一个表达式,当需要左值时产生一个右值。
在编译器操作表达式的情况下,它将导致无效表达式,即++ 1
尝试以下:
的printf( “%d”,I + J + 1);
答案 4 :(得分:0)
表达式++(i+j)
不可分配。这里,将首先评估表达式(i+j)
。对于++
运算符,操作数必须具有整数,浮点或指针类型,并且必须是可修改的l值表达式。由于i+j
的结果是常量值,因此您会收到错误lvalue required as increment operand
。您可以选择将此表达式修改为i+j+1
。