#define的妙用

文章介绍了#define在编程中的多种用途,包括用其定义简化的循环结构、字符串长度判断、计算lowbit、实现swap函数、求gcd和lcm以及定义max和min操作。通过#define,可以提高代码的简洁性和效率,同时也展示了位运算在编程中的应用。
摘要由CSDN通过智能技术生成

#define的妙用

在大家编程的过程中,难免会用到#define。在用的过程中大多数都是#define inf 100000000#define Max 12。可是你难道没有别的想法了吗?

例1:define不仅仅能代表一个数字

在变成的过程中,经常或用到for,为了简化,可以写成#define f(n) for(int i=1;i<=n;++i);当一个字符串的位数在不停的变化的时候,str.size()就会显得十分累赘,所以,可以用#define ss str.size()>来表示。可是define的用处要有很多。

例2:define不仅仅能代表一串字符

2.1:lowbit

相信大家都是到lowbit也世道它有什么用,但是你有没有想过int lowbit()它返回的是int,而不是unsignedlong long,于是,就用上了#define
define写也很容易:#define lowbit(x) (x&(-x)),竟然连定义的时候int xunsigned x都不用加
当你的朋友按着ctrl+鼠标左键时,他什么也找不着。

2.2:swap

大家对这个肯定了如指掌,但是通过位运算:^也能进行交换:

void swap(int *a,int *b)
{
	*a^=*b;
	*b^=*a;
	*a^=*b;
}

但是写一个函数太麻烦了,于是就用上了鼎鼎有名的define#define swap(x,y) (x^ =y,y^ =x,x^ =y)你可能会说:这个怎么没有加*呢?这是因为swap函数里的xy的地址就是调用时的xy

2.3:gcd和lcm

大家都接触过gcd1lcm2,但是大家都用着之前的方法

inline int gcd(a,b)
{
	return (b?gcd(b,a%b):a);
}
inline int lcm(a,b)
{
	return a*b/gcd(a,b);
}

但是,#define也可以做#define gcd(a,b) (b?gcd(b,a%b):a)#define lcm(a,b) (a*b/gcd(a,b))#define也可以自己调用自己!

max和min

这个大家最为熟悉了吧。直接上代码#define max(x,y) (x>y?x:y)#define min(x,y) (y>x?x:y)

未完待续 持续更新


  1. 最大公因数 ↩︎

  2. 最小公倍数 ↩︎

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值