C语言问题!!!!关于自加和自减运算

来源:百度知道 编辑:UC知道 时间:2024/05/16 01:56:08
第一题
int x=y=2,z=3;
y=x++ -1;printf("%d\t %d\t",x,y);
y=++x-1;printf("%d\t %d\t",x,y);
y=z-- +1;printf("%d\t %d\t",z,y);
y=--z+1;printf("%d\t %d\t",z,y);
答案是3 1
4 3
2 4
1 2
这个答案是怎么得到的啊?++(--)和+(-)的优先级哪个高些啊?
第二题(注意运算中的空格,和第一题不一样)
int x=y=2,z=3;
y=x + +-1;printf("%d\t %d\t",x,y); /"+-"是加号和减号连在一起,可能看不清/
y=+ + x-1;printf("%d\t %d\t",x,y);
y=z - -+1;printf("%d\t %d\t",z,y);
y=- -z+1;printf("%d\t %d\t",z,y);
答案是2 1
2 1
3 4
3 4
这个答案又是怎么回事啊。希望讲详细些,谢谢谢谢谢!!!

++优先级比 + 高。。
但是++ 前后是有差别的。
x++ 表示:x先用一次,用了,就变x+1了。
++x 表示:先变x+1,然后再用。

int x=y=2,z=3;
y=x++ -1;printf("%d\t %d\t",x,y);//这里是x后++ y=2-1之后x=2+1;
y=++x-1;printf("%d\t %d\t",x,y);//这里x前++,先x=3+1;再y=4-1;
y=z-- +1;printf("%d\t %d\t",z,y);//这里一样,现y=3+1,再z=3-1;
y=--z+1;printf("%d\t %d\t",z,y); //z=2-1;y=1+1;

=================================================

int x=y=2,z=3;
y=x + +-1;printf("%d\t %d\t",x,y); //"+-"号没有特别意义,这里和分开 + - 是没有区别的都可以看成正负号,相当于y=x + + -1,而这个就相当于y=x-1;
y=+ + x-1;printf("%d\t %d\t",x,y); //这里相当于y=x-1;
y=z - -+1;printf("%d\t %d\t",z,y); //y=z+1
y=- -z+1;printf("%d\t %d\t",z,y); //y=z+1

你再按说明算下结果看看。

记住两句话就好啦 !
1、y=x++是先将x的值赋给y然后自己再自加
2、y=++x是x先自加然后把值赋给y
(--是一样的)
像你看的这几个题很无聊,真正的程序里不会有这样的东西的,也不会有哪个程序