求下列程序的运行结果main(){int x=6,y,z;x*=18+1;printf("%d,",x--);x+=y=z=11;printf("%d,",x);x=y==z;printf("%d\n,"-x++);}main(){int x=6,y,z;x*=18+1;printf("%d,",x--);x+=y=z=11;printf("%d,",x);x=y==z;printf("%d\n,",-x++);}
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/05 19:02:11
求下列程序的运行结果main(){int x=6,y,z;x*=18+1;printf("%d,",x--);x+=y=z=11;printf("%d,",x);x=y==z;printf("%d\n,"-x++);}main(){int x=6,y,z;x*=18+1;printf("%d,",x--);x+=y=z=11;printf("%d,",x);x=y==z;printf("%d\n,",-x++);}
求下列程序的运行结果
main()
{int x=6,y,z;
x*=18+1;printf("%d,",x--);
x+=y=z=11;printf("%d,",x);
x=y==z;printf("%d\n,"-x++);
}
main()
{int x=6,y,z;
x*=18+1;printf("%d,",x--);
x+=y=z=11;printf("%d,",x);
x=y==z;printf("%d\n,",-x++);
}
求下列程序的运行结果main(){int x=6,y,z;x*=18+1;printf("%d,",x--);x+=y=z=11;printf("%d,",x);x=y==z;printf("%d\n,"-x++);}main(){int x=6,y,z;x*=18+1;printf("%d,",x--);x+=y=z=11;printf("%d,",x);x=y==z;printf("%d\n,",-x++);}
程序报错,prt(&a,&b&c); 少了个逗号pr(&a,&b,&c);
答案是11,41,20
12,42,20
那你要问为什么C还是20,那我们看一下程序:
",++*x,++*y,*(z++));} 单单看*(z++)这个两次的运行顺序我写一下:
1.输出*z因为z++是先运行Z然后再运行z++的
2.z++是什么意思,不是20加1,因为这个z不是*z,它的自加不会影响到20这个数,只是它指向的地址加1,如果原来它指向的地址是100的话,那么现在就是101,所以到第二次输出是还是20,因为20没有被改变,而且每一次运行这个函数的时候,z的赋值就会被重置,而不是原来后面的那个地址了,所以还是20的地址,输出当然是20.不知道你懂了没有!
如果懂了的话,就赏我面小旗玩玩吧!
继续,我不是说过每次运行prt这个函数,z的赋值就会被重置吗,就是说没一次运行prt这个函数,z的值就会被赋予20这个数的地址,而结束这个函数后,z的值会消失,所以到下一次运行的时候还是20这个数的地址,现在知道了吗?