在1.9中,左值被定义为可被赋值的表达式,你也可以认为左值是出现在赋值语句左边的表达式。这样,右值就可以被定义为能赋值的表达式,它出现在赋值语句的右边。与左值不同,右值可以是常量或表达式:例如:
int X,y;
x = 1; /* 1 iS an rvalue, x is an lvalue */
y=(x+1); /* (x+1)is an rvalue;y is an lvalue */
在前面已经介绍过,一条赋值语句必须有一个左值和一个右值,因此,下述语句无法通过编译,因为它缺少一个右值:
int x;
x=void_function_call(); /* the{unction void—function—call() returns nothing */
如果上例中的函数返回一个整数,那么它可以被看作一个右值,因为它的返回值可以存储到左值x中。
请参见:
1、什么是左值(lvaule)?
2、数组可以是左值吗?