在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
有可能是+和= 连在一起了,算成+=运算符了吧

在C语言中,为什么x++=y++是错误的,而++x=++y是正确的?
x++有两个地址,一个是x本身的地址,还有个x+1后的地址,所以它不能作为左值,y++不能赋给一个地址不确定的变量。所以会出错,而++x,只有一个地址,就是x+1后的地址,所以能将y+1后的值赋给它,所以是正确的,楼主应该是没明白前++和后++的意义,多看看教材理解理解。

x,y 都是int, x++=y++ 为什么错?
语法错误,x++等价于x=x+1,也就是说,它是个表达式,而C规定不能对表达式赋值,所以出错。x+=y++ 倒是可以,它等价于x=x+y; 已赞过 已踩过< 你对这个回答的评价是? 评论 收起

C语言z=(x++,y++)与z=(++x,++y)的区别
y++的值先赋给z,然后y自身再加一。++y先自身加一,再赋值给z。前面的x没有用到。

C语言中x++和++x的区别?
C语言中x++和++x的区别如下:x++是在有这个的这个算式中先使用x,再自增1及x=x+1。++x是先自己加1,再使用。用 ' ' 包括起来的都是字符,也就是char型的量,注意是量,不是变量,而x则就是变量。比如你有一个char型的变量x,你想把x的值赋值为x,就这样写 x='x'; 将字符'x'赋值...

C语言中y=x++ y=++x的结果为什么不同
前置自加 先自加 再赋值。后置自加 先赋值再自加。所以,y=x++ , y值是自加前的。y=++x; y值是自加后的。二者差1.

C语言求大神!c=x++||y++,为什么最后的xy不等?
因为这是||或运算,第一个为真的话,第二个就不执行了 所以因为x为真所以y++就不会执行 最后就得到x=2,y=1,c=1了

在c++中,++x||++y是什么意思
这是一个逻辑表达式, 判断 ++x 的值 或者 ++y 的值 是否有一个为真,如果有,则逻辑表达式++x||++y为真,否则为假。而且当 ++x 为真后,表达式将不会判断 ++y 的值。即++y不会执行。如果要输出x,y的值时,就会很明显了。

C语言里的++
其中X++,Y++相当于X=X+1,Y=Y+1 X--, Y--相当于X=X-1,Y=Y-1 --X, --Y相当于X=X-1,Y=Y-1 但如果这些表达式赋值给另一个变量则就有变化了:比如M=X++,N=++X这两个表达式就不一样,这其实是优先级的问题 如M=X++(++在后的优先级低于赋值符号的优先级),则先赋值,再自加...

c语言中x++和++x的区别?
C语言中x++和++x的区别:一、答案首行 在C语言中,x++和++x都是对变量x进行自增操作,但它们之间存在明显的区别。主要体现在操作顺序和结果上。二、详细解释 操作顺序不同:x++被称为后置自增运算符,意味着先返回变量x的当前值,然后再执行自增操作。例如,如果代码中有表达式y = x++,则会先...

程序z=x++,y++,++y;怎么算
z=x++:这个是首先把x的值赋给z,然后x再自加1。y++:这个是先用后加,比如:int y=2;printf(“%d”,y++);这个就运行结果的就是2,但如果再在后面加一个printf(“%d”,y);这个时运行的结果就是3了(因为在显示第一个之后就已经用了y,所以接着就自加1,再运行的时候就是3 了)...

相似回答