c语言习题,请帮我解答一下这套题,谢谢

来源:百度知道 编辑:UC知道 时间:2024/05/31 16:11:11
main()
{
int x=y=z=1;
y++;
++z;
x=(-y++)+(++z);
printf("x=%d,y=%d,z=%d",x,y,z);
x=y=1;
z=++x||y++;
printf("x=%d,y=%d,z=%d",x,y,z);
两个结果各是多少,怎么算的
为什么解答的 -y++是-2 而不是 先y++ 再取 - 呢 就是-3

x=1,y=3,z=3
x=2,y=1,y=1
-y++是先判断正负然后再运算的所以是(-y)+1

int x=y=z=1;
y++;//这里y=2
++z;//z=2
x=(-y++)+(++z);//x=-2+3=1,y=y++=3,z=++z=3
printf("x=%d,y=%d,z=%d",x,y,z);
x=y=1;
z=++x||y++;
//z=2||1=1这是是判断z为真假非0||非0=1,z只可能是0或1,然后为什么这里的y=1而不是y=y++=2呢这是与语言设计有关系的,因为||或运算一旦可以判断结果就不会进行以后的运算了,z由++x=1,1或任何值=1它就不会进行y++运算了,所以这里的y不会++,y=1
printf("x=%d,y=%d,z=%d",x,y,z);
++在前面表示先++后运算,在后面表示先运算后++,记住这个就很容易了

x=1,y=3,z=3
x=2,y=1,z=1
解:(程序有误,修改如下)
main()
{
int x,y,z;
x=y=z=1;
y++; //y=2
++z; //z=2
x=(-y++)+(++z); //x=(-2)+(3)=1,y=3,z=3
printf("x=%d,y=%d,z=%d",x,y,z);
x=y=1;
z=++x||y++; //z=2||1=1,y=1,x=2
printf("x=%d,y=%d,z=%d",x,y,z);
}

改正后的程序
#include <stdio.h>
void main()
{
int x,y,z;
x=y=z=1;
y++