行云

行至水穷处,坐看云起时。

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

 

/* 不用关系符和if比较大小 */
#define MAX(a, b) (a/b)?a:b
#define MIN(a, b) (a/b)?b:a
/* 上面的方法,有个缺点,b不能为0 下面的方法可以解决这个问题*/
#define MAX(a, b) (a+b+abs(a-b))/2
#define MIN(a, b) (a+b-abs(a-b))/2

/* 交换两个数的值 */
#define SWAP(a, b) (a=a^b, b=a^b, a=a^b)

 

如果需要加入一段在main退出后执行的代码,可以用atexit函数注册一个函数。函数原型为void ()(void)
 

void fun(void)
{
  printf("after main\");
}
int main()
{
  atexit(fun);
  printf("main exit\n");
  return 0;
}

 最大公约数

int gcd(int m, int n)
{
    if (n==0)
        return m;
    else
    {
        return gcd(n, m%n);    
    }
}

 最小公倍数

int lcm(int m, int n)
{
    return (m*n)/gcd(m, n);
}

 C++获取对象类名

void ClassName(void *p)
{
    type_info*** vtbl=(type_info***)(*(int*)p);
    type_info**  tp=vtbl[-1];
    type_info*   v=tp[3];
    printf("%s\n",v->name());
}

 或者

typeid(ob).name()

 

posted on 2012-03-27 21:15  windflying  阅读(493)  评论(0编辑  收藏  举报