学习定义宏时选择最不优解,探索调用函数的原理

#define SWAP(t,x,y) t=x, x=y, y=t;

#include <stdio.h>

int trans(float f){

    int a = (int)f;

    return a;

}

int main(){

    printf("give 2 trans num\n");

    {

        float temp,x,y;

        scanf("%f%f",&x,&y);

   

        SWAP(temp,x,y);

        // temp = trans(temp);

        // x=trans(x);

        // y=trans(y);

        // trans(temp);

        // trans(x);

        // trans(y);

        //上述两组调用trans函数均不影响打印

        // printf("temp=%d, x=%d, y=%d",(int)temp,(int)x,(int)y);

        printf("temp=%d, x=%d, y=%d\n",temp,x,y);

        printf("temp=%f, x=%f, y=%f\n",temp,x,y);

        printf("temp=%d, x=%d, y=%d\n",trans(temp),trans(x),trans(y));

        printf("temp=%f, x=%f, y=%f\n",trans(temp),trans(x),trans(y));

        //由打印结果,【提前赋值】temp,x,y不可行,猜测原因:

        //整型赋给浮点会转换成浮点,故提前赋值,temp,x,y仍为浮点,无效转换

        //SUM UP!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

        //以上为worst解  勿用

        // return temp,x,y;

    }

    return 0;

}

//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

//以下为 合理 解  cr. csdn

// #include<stdio.h>

// #define SWAP(t,x,y) t=x;x=y;y=t;

// int main()

// {

//     float temp,a,b;

//     printf("输入a和b:");

//     scanf("%f%f",&a,&b);

//     SWAP(temp,a,b);

//     printf("a=%.2f\n",a);

//     printf("b=%.2f\n",b);

//     return 0;

// }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值