c语言中的“左值”和“右值”

左值

左值就是在赋值中可以放在赋值操作符 (=)  左边 的值,当然也可以放在右边,比如: 

int a = 1; 
double b = 2.0 

a = b; 
b = a; 

这里a和b都是左值,一切变量都是左值,但const变量是例外。 

右值

而右值则是只可以放在赋值操作符右边的值,比如: 

int a = 0; 
char *b = "hello"; 

3 = a; // ERROR 
"howdy" = b // ERROR 

这里3和"howdy"都是右值,所以不能放在赋值操作符左边,一切常数、字符和字符串都是右值。