int a = 0; (a+1)++; //这句为什么不行?
a+1为什么不能作为左值
解决方案
2
“++”是C和C++里的自增运算符,使可变左值(如变量,迭代器变量等)加一。所以应该是变量吧,a+1是表达式吧。拙见还请指正
6
a+1的返回值是个临时变量,不能对其取地址,只能作右值。
12
a+1是一个编译器自动分配的临时变量,并不是程序中定义的变量,所以不能对它进行寻址。
既然都无法寻址,自然没法在这个变量上++了
既然都无法寻址,自然没法在这个变量上++了
6
题主先搞清楚什么是左值和右值:
左值:可寻址的变量或常量,例如:定义 int a;
右值:不可寻址的变量。例如使用赋值符号”=”时,编译器会声明的临时变量。
左值:可寻址的变量或常量,例如:定义 int a;
右值:不可寻址的变量。例如使用赋值符号”=”时,编译器会声明的临时变量。