在C语言中,为什么x++=y++是错误的,而++x=++y是正确的?

如题所述

x++有两个地址,一个是x本身的地址,还有个x+1后的地址,所以它不能作为左值,y++不能赋给一个地址不确定的变量。所以会出错,而++x,只有一个地址,就是x+1后的地址,所以能将y+1后的值赋给它,所以是正确的,楼主应该是没明白前++和后++的意义,多看看教材理解理解。
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-03-14
x++只能作为右值,而++x既可作为左值又可作为右值。
(意思就是x++只能放在赋值号右面。)
因为x++是把x的值增一,并返回x原来的值,这个值并不储存在变量x的内存地址中,是计算时的一个临时值,因此不能向它赋值。而++x是将x的值增一,并返回x的值,因此可以向这个变量赋值。本回答被提问者和网友采纳
第2个回答  2012-02-21
你确定++x=++y也是正确的? 可以把你那个程序拿来看下么,我记得最多只能同等,或者把右边的值赋于x追问

确定,我在VS2010中测试过,程序很简单的,如下:
#include
#include

using namespace std;

void main()
{
int x=1,y=2;
// ++x=++y;
x++=y++;
cout<<x<<endl;
system("pause");
}
当测试到x++=y++的时候编译不通过,但++x=++y的时候,x的输出值为3

第3个回答  2012-02-21
有可能是+和= 连在一起了,算成+=运算符了吧
相似回答