c语言 void main() { int x=10, y=10; x+=++x;
发布网友
发布时间:2023-05-09 11:20
我来回答
共5个回答
热心网友
时间:2024-08-28 14:24
x+=++x;
等价于:++x; x+=x;
取用x前先自增,x变为11,再执行x=x+x。于是11+11=22
y+=y++;
等价于:y+=y; y++;
这是先运算后y再自增。y=10+10=20,然后再增1,变为21。
热心网友
时间:2024-08-28 14:24
自增运算符++优先级大于+运算符
正如楼下所说
X=X+(++X);
Y=Y+(Y++);
++X先将X加1,再运算X+X;即结果为X+1+X+1=2X+2=22;
Y++虽然先自增,但是要在做下一个运算,即+时才体现出来,所以Y++结果为Y;而算 Y+Y 时就是前一个Y为Y自增后的结果Y+1,后一个Y暂时保留原来的值,最后即是Y+Y+1=2Y+1=21
不好意思,第二个楼下那位 “听不清啊” 说的对,是先运算再自增,,,
热心网友
时间:2024-08-28 14:25
x+=++x;//前置++,的值x已经改变了,所以是11+11=22
y+=y++;//后置++的值y原来的值不变,所以是10+11=21
望采纳,谢谢合作
热心网友
时间:2024-08-28 14:25
可以把式子改成下面就好懂了:
X=X+(++X);
Y=Y+(Y++);追问谢谢很清楚。求分析,x为什么是22
追答X先加1即为11,再加上前面的X(也是11),结果就是22
热心网友
时间:2024-08-28 14:26
int x=10, y=10;
x=x+(++x);
y=y+(y++);
和上面是等效的