为什么它会抛出一个错误左值是必需的?

时间:2017-08-29 19:27:59

标签: c

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

在这段代码中,我使用了增量运算符,但我不知道它为什么会抛出错误。

它抛出错误:

  

需要左值。

5 个答案:

答案 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