宏函数

1. 宏函数定义的时候需要加({ })

比如
#include <stdio.h>
#define swap(a, b) ({(a)=(a)+(b);\
                     (b)=(a)-(b);\
                     (a)=(a)-(b);})

int main(int argc, const char *argv[])
{
    int array[2] = {10, 20};
    printf("array[0] = %d;array[1] = %d\n", array[0], array[1]);
    swap(array[0], array[1]);
    printf("array[0] = %d;array[1] = %d\n", array[0], array[1]);
    return 0;
}                                                         
此函数的说明

a = a + b;
b = a - b; // b = (a + b) - b = a;
a = a - b; // a = (a + b) - (a) = b;

宏函数中为了避免swap(10+3, 12) ,这种情况的出现,应该采用这种方案:

要搞定它其实很简单,别吝啬括号就行了。


2. 宏函数相似返回值的实现

#include <stdio.h>
#define swap(a, b) ({(a)=(a)+(b);\
                     (b)=(a)-(b);\
                     (a)=(a)-(b);\
                      a;})

int main(int argc, const char *argv[])
{
        int array[2] = {10, 20};
        int temp = 0;
        printf("array[0] = %d;array[1] = %d\n", array[0], array[1]);
        temp = swap(array[0], array[1]);
        printf("array[0] = %d;array[1] = %d\n", array[0], array[1]);
        printf("swap = %d\n", temp);
        return 0;
}

在 swap 中,整体的值是最后一个元素的值
即 a 的值

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值