C语言中有关if语句的问题

来源:百度知道 编辑:UC知道 时间:2024/06/18 00:16:39
#include <stdio.h>
void main()
{
int x=10,y=20,t=0;
if(x=y)t=x;x=y;y=t;
printf("%d %d\n",x,y);
}

结果是20 20;
我不晓得是怎么得来的
详细讲讲啊
还有将if()中的“=”换成“=”
结果怎么不一样啊!
先谢谢了!

首先 你要理解 =与==的区别
=是赋值 即把=右边的值 赋值给=右边的
x=10 就是把10赋值给 x 这时候x的值就是10
==是比较 两边是否相同 如果相同 返回真 不相同 返回假

#include <stdio.h>
void main()
{
int x=10,y=20,t=0;//x赋值为10,y赋值为20,t赋值为0
if(x=y)//把y的值 赋值给x 这个时候x的值就不是开始的10了 变成了20
t=x;//把x的值赋值给t t变成了20
x=y;//把y的值赋值给x x还是20 因为上面你已经把y 的值赋值给x一次了
y=t;//把t的值赋值给y y的值还是20
printf("%d %d\n",x,y);//输出结果是20 20
}
if(x==y)//判断==两边的值是否相同 x是10,y是20,肯定不同 返回假
t=x;//因为返回时假 所以这句不执行 x没有能赋值给t 所以t的值还是0
x=y;//y赋值给x x的值为20
y=t;//t的值赋值给 y t为0 所以y变成了0

输出结果为20 0