萌新遇到个c二级问题

题目如下

#include<stdio.h>
#define SWAT(t,a,b) t=a;a=b;b=t;

int 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);
     return 0;
}

问我输出后的结果是什么,然后我想来想去应该还是原来的数啊。后来百度上搜了一下终于懂了<哭> 其实也不难,以后要多注意一下啊

#include<stdio.h>
#define SWAT(t,a,b) t=a;a=b;b=t;

int main()
{
    
    
     int x = 6, y = 4, z = 3, s = 0;
     if(x<y) SWAT(s,x,y);
     //if后面没有加花括号 so符合条件的话执行s=x    x=y还有y=s是一定要执行的  后面同理
     if(x<z) SWAT(s,x,z);
     if(y<z) SWAT(s,y,z);
     printf("%d %d %d \n", x, y, z);
     return 0;
}


红色的为展开来会执行的语句 后面为每一个数的值 最后答案为3 0 0

猜你喜欢

转载自blog.csdn.net/xiaozhazhazhazha/article/details/104111319