辽宁省司法鉴定中心:一个程序题

来源:百度文库 编辑:神马品牌网 时间:2024/04/28 02:36:31
3写出以下程序的输出结果是
main()
{ int x, y,z;
x=y=1;
z=x++ -1;
printf("%d,%d\t',x,z);
z+=-x++ +(++y||++z);
printf("%d,%d",x,z);)
KEY: 2, 0 3,-1 可以告诉我这些答案怎么得出来的吗?
,++Z与++Y均不为零,所以(++Y||++z)值为1Y是一哦~++1不就变成了2了?怎么还是1啊

C语言基础题,主要目的是让你弄清自加自减运算的结合方式和使自变量变化的规律。

第一次打印结果时,打印X,Z,X自加后,值为2,Z=自加前X值减一,也就是0

第二次打印时,Z=Z-X+++(++Y||++z)
Z=0,X使用原值后自加,++Z与++Y均不为零,所以(++Y||++z)值为1
这次运算后,Z=0-2+1=-1,X为第二次自加后结果,为3

首先要知道X++与++x的区别
eg.x=1;
cout<<x++<<x;(1 2)

x=1;
cout<<++x<<x;(2 2)的结果是不一致的。
再综合前面一位的解答,所以现在搂主知道结果的原因了吧