#include
int main()
{
int x=2,y=3;
x*=y+4;
printf("%d, %d\n",x,y);
x/=y=5;
printf("%d, %d\n",x,y);
x-=y%2;
printf("%d, %d\n",x,y);
return 0;
}
初始值x=2,y=3
x*=y+4即x=x*(y+4)
所以x=2*(3+4)=14
输出14,3(因为输出格式里有逗号所以必须输出逗号)
因x被赋值为14,y值不变,所以此时x=14,y=3
x/=y=5即x=x/(y=5) 优先算括号内,所以y被赋值为5
即x=14/5=2 除法不四舍五入
输出2,5 格式为十进制输出所以没有小数点
此时x=2,y=5
x-=y%2 即 x=x-(y%2)(取余运算)
所以x=2-5%2=2-1=1
输出1,5
输出14 3
2 5
1 5
#include
int main()
{
int x=2,y=3;
x*=y+4;//等同x=x*(y+4)
printf("%d, %d\n",x,y);//输出x,y值
x/=y=5;//等同y=5,x=x/5;此时x为上一个等式结果14
printf("%d, %d\n",x,y);
x-=y%2;//等同x=x-(y%2)此时x,y为上一个等式结果2,5,其中x=2是由于x为int型只保留整数位2
printf("%d, %d\n",x,y);
return 0;
}
输出:
14,3
2,5
1,5
x*=y (x/=y ... ) 的意思是 用变量x的值 * (/+-...)变量 y的值所得的结果对变量x再赋值
x*=y+4 先算y+4 =3+4=7 变为 x* =7 , x*=7意思也就是 x=x* 7 =2*7=14 此时 x=14 ,y没变依然是=3, 执行printf("%d, %d\n",x,y);时输出
14,3
执行 x/=y=5 时 先把5赋值予y,此时y=5 ,然后执行x/=y, 即x=x/y,上面x的值发生了变化x=14,所以这里x=14/5=2.5,而x为int 类型所以小数部分
会被直接丢掉 故此时 x=2, 所以再执行 printf("%d, %d\n",x,y) 时输出的是2,5
后面的同理输出 1,5
而 return 0 意思是该函数执行后返回数值是0,比如有 int z=main() 执行后 z=0
初始值x=2,y=3
x*=y+4即x=x*(y+4)
将x=2,y=3带人,所以x=2*(3+4)=14
此时输出x和y分别为14,3
接下来
因x被赋值为14,y值不变,所以此时x=14,y=3
x/=y=5即x=x/(y=5) 优先算括号内,所以y被赋值为5
即x=14/5=2 除法不四舍五入
输出x和y 分别为2,5 格式为十进制输出所以没有小数点
此时x=2,y=5
x-=y%2 即 x=x-(y%2)(取余运算)
所以x=2-5%2=2-1=1
输出x和y分别为1,5
这个题的设计其实是 x“‘算术运算符’=y“,就是x=x”算术运算符“y。然后考察整型的用法和c语言的输出。答案楼上有很多人都详细解释了,我就不重新输了。如果你在学c的话,知识点的积累比个例题型更重要,建议你把这三个知识点看看。