1.交换两个数组
//交换两个数组
int a[] = { 1,2,3,4,5,6 };
int b[] = { 6,5,4,3,2,1 };
int tep = 0;
int sz = sizeof(a) / sizeof(a[0]);
for (int i = 0; i <sz ; i++)
{
tep = a[i];
a[i]=b[i];
b[i] = a[i];
}
2.求字符串的长度(指针版):
//指针求字符串的长度
int my_str(char* str) {
char* start = str;
char* end = str;
while (*end !='\0')
{
end++;
}
return end-start;//返回数组个数
}
//加强版
int my_strlen(const char* sr) {
int count = 0;
assert(*sr != NULL);
while (*sr!='\0')
{
sr++;
count++;
}
return count;
}
3.sizeof返回的是无符号数,当int类型与unsigned进行判断或者运算的时候,int类型会转化成unsigned无符号数。
全局变量不初始化默认是0
所以i=-1的时候再计算机中的补码是11111111111111111111111111111111,这个数当成unsigned是一个超级大的数,所以这个结果是打印>
4.求一个数的补码中有几个1:
int count_bit(int a) {
int i = 1;
int count = 0;
int times = 32;
while (times)
{
if (a & i) {
count++;
}
a = a >> 1;
times--;
}
return count;
}
!!!一个很重要的知识点n=n&(n-1)它的作用是每次把n补码上最右边的1变成0.
改进型: