什么能被赋值(当左值或左值表达式)?

左值:具有存放数据的空间且允许存放
左值表达式:该表达式的运算结果是一个左值
以下是C艹中的几个例子:

int a=0;
a=3;//正确,此处a是左值
//a最后的值为3
const int a=0;
a=3;//错误,此处a为常变量,不允许被再次存放,不能当左值
//a赋值错误
int a=0,k=1;
	++a=k;//正确,因为它使a的值+1,运算结果依然是变量a,所以++a是左值表达式
//a最后的值为k的值1
int a=0,k=1;
	a++=k;	//错误,因为a++的运算结果是一个临时变量,
			//而这个临时变量并不是你程序中定义的可寻址变量的引用,不能被更改,不能作为左值表达式
//a赋值错误
int a=0,k=1;
(a=k)=3;//正确,先执行(a=k),这个赋值表达式的运算结果依然是变量a,数值上等于k的值,因此可以作为左值表达式
//a最后的值为3

总之,左值都可以被赋值,由于左值表达式返回一个左值,因此也可以对其赋值。

原创文章 6 获赞 10 访问量 1388

猜你喜欢

转载自blog.csdn.net/mkr67n/article/details/103912795