前言
在学习C/C++过程中,总会遇到很多令人眼前一亮的骚操作,这里我总结一下自己遇到过的一些写法,供大家学习。
实例
1、求最大公约数
int gcd(int x, int y){
return y?gcd(y, x%y):x;
}
2、数值置换
a ^= b ^= a ^= b;
3、判断奇偶数
/*对于除0以外的任意数x,使用x&1==1作为逻辑判断即可*/
if(x & 1 == 1)
{
//奇数
}
else
{
//偶数
}
4、取余
/*除数为2的n次方*/
int Remainder(int Dividend, int Divisor)
{
int i = 1 << Divisor;
return Dividend & (i - 1);
}
5、数据加密
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define KEY 0x86
int main()
{
char p_data[16] = {"Hello World!"};
char Encrypt[16] = {0}, Decode[16] = {0};
int i;
for(i = 0;i < strlen(p_data);i++)
{
Encrypt[i] = p_data[i] ^ KEY;
}
for(i = 0;i < strlen(Encrypt);i++)
{
Decode[i] = Encrypt[i] ^ KEY;
}
printf("Initial date: %s\n", p_data);
printf("Encrypt date: %s\n", Encrypt);
printf("Decode date: %s\n", Decode);
}
6、取绝对值
int abs(int n)
{
int i = n >> 31;
return i == 0 ? n : (~n + 1);
}
7、乘除
//位操作实现乘除法
a = b << 3; //a = b * 8
a = b >> 3; //a = b / 8;
8、宏
//使用do...while(0)写法可以使宏替换函数体时更美观,
#define DOSOMETHING() \
do{ \
func(); \
}while(0) \
总结
To be continue......
本文分享了一系列C/C++编程中的实用技巧,包括求最大公约数的递归方法、数值置换、判断奇偶数、取余操作、数据加密、取绝对值等,并介绍了位操作在乘除法中的应用及宏定义的编写方式。
1314

被折叠的 条评论
为什么被折叠?



