关于C语言中自增自减左值的问题

C语言 码拜 9年前 (2016-04-05) 1065次浏览
int a = 0;
(a+1)++;  //这句为什么不行?

a+1为什么不能作为左值

解决方案

2

“++”是C和C++里的自增运算符,使可变左值(如变量,迭代器变量等)加一。所以应该是变量吧,a+1是表达式吧。拙见还请指正

6

a+1的返回值是个临时变量,不能对其取地址,只能作右值。

12

a+1是一个编译器自动分配的临时变量,并不是程序中定义的变量,所以不能对它进行寻址。
既然都无法寻址,自然没法在这个变量上++了

6

题主先搞清楚什么是左值和右值:
左值:可寻址的变量或常量,例如:定义 int a;
右值:不可寻址的变量。例如使用赋值符号”=”时,编译器会声明的临时变量。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明关于C语言中自增自减左值的问题
喜欢 (0)
[1034331897@qq.com]
分享 (0)