C/C++小技巧

  1. 1 宏
    1. 1.1 ‘#‘和’##’
  2. 算法
    1. 计算二进制1的个数
    2. 数据交换

1 宏

1.1 ‘#‘和’##’

/* “#”符号把一个符号直接转换为字符串 */
#define STRING(x) #x
const char *str = STRING(MESSAGE)

/* "##"符号会连接两个符号,从而产生新的符号(词法层次) */
#define SIGN( x ) INT_##x
int SIGN( 1 );  // 输出内容为INT_1

算法

计算二进制1的个数

int count(int num)
{
  int count=0;
  while(num) {
        count++;
        num&=(num-1);
  }
  return count;
}

数据交换

/* C style */
#define swap(a, b) { \
  a ^= b; \
  b ^= a; \
  a ^= b; \
}
/* C++ style */
inline void swap(int &a, int &b)
{
  a ^= b;
  b ^= a;
  a ^= b;
}

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 add358@163.com

文章标题:C/C++小技巧

文章字数:124

本文作者:Jake Yang

发布时间:2018-08-11, 00:00:00

最后更新:2019-12-16, 16:03:14

原始链接:https://add358.github.io/2018/08/11/Language-CXX-2018-08-11-小技巧/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏