C/C++小技巧
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" 转载请保留原文链接及作者。