|
发表于 2023-4-12 21:16:08
From FishC Mobile
|
显示全部楼层
|阅读模式
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#define swat(t,a,b) t=a;a=b;b=t;
void main()
{
int x=6,y=4,z=3,s=0;
if(x<y) swat(s,x,y);
if(x<z) swat(s,x,z);
if(y<z) swat(s,y,z);
printf("%d,%d,%d\n",x,y,z);
}
这个输出结果怎么得到的3 0 0 我只能得出来6 4 3 三个if均不成立应该不执行才对呀
本帖最后由 isdkz 于 2023-4-12 21:18 编辑
这个代码中的输出结果应该是6, 4, 3,而不是3, 0, 0。让我们逐步分析这段代码:
- 定义了一个宏swat,它接收三个参数t、a、b,然后交换a和b的值,将a的值存入t。
- 主函数开始,定义了四个整数变量x、y、z、s,分别赋值为6、4、3、0。
- 第一个if语句判断x是否小于y,即6是否小于4,条件不成立,所以不执行交换操作。
- 第二个if语句判断x是否小于z,即6是否小于3,条件不成立,所以不执行交换操作。
- 第三个if语句判断y是否小于z,即4是否小于3,条件不成立,所以不执行交换操作。
由于三个if语句都没有执行,x、y和z的值分别保持在6、4和3。因此,输出结果应该是6, 4, 3。这个代码的目的是对三个数进行排序,但实际上它没有正确实现排序功能,所以结果不会有变化。
|
|