使用 宏定义 实现的高级算法





#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */
#define SOR(x) (x)*(x)  //求平方

#define Max(a,b) (((a)-(b)) == fabs((a)-(b)))?(a):(b)   //求最大值
#define Min(a,b) (((a)-(b)) == fabs((a)-(b)))?(b):(a)   //求最小值
#define ISUNSIGNED(a) ((a > 0)&&(~a > 0))               //判定变量是否是无符号的
#define ISUNSIGNED_TYPE(type) ((type)(0-1) > 0)         //判定类型是否是无符号的

#define MySize(value) ((char *)((&value) + 1) - (char *)(&value))     //   求类型占用的空间大小

#define OffSet(type,field) ((size_t)&(((type*)0)->field))      //  求结构体中的偏移
struct str
{
	int a;
	float f;
	double d;
	char c;
};
int main(int argc, char *argv[])
 {

	printf("%d\n",OffSet(struct str,a));    // 0
	printf("%d\n",OffSet(struct str,f));    // 4
	printf("%d\n",OffSet(struct str,d));    // 8
	printf("%d\n",OffSet(struct str,c));    // 16

	return 0;
}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值