不使用其他变量交换两个整型的值:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
#include <stdio.h>
void main(){
int b = 4;
a = a ^ b; //使用异或交换
b = b ^ a;
a = a ^ b;
printf ( "%d, %d\n" , a, b);
a = a - b; //使用加减交换
b = a + b;
a = b - a;
printf ( "%d, %d\n" , a, b);
a ^= b ^= a ^= b;
printf ( "%d, %d\n" , a, b);
}
|
整形和字符数组型转换:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
#include <stdio.h>
#include <stdlib.h>
int sumof1( int x) //求一个数转换成二进制以后1的个数
{
int countx = 0;
while (x)
{
countx ++;
x &= x-1; //每位与一次x - 1;就能消掉最后一个1
}
return countx;
}
void main(){
char c[10];
int i = 999;
itoa(i, c, 10); //以10进制转换成字符数组
puts (c);
itoa(i, c, 16); //以16进制转换成字符数组
printf ( "0x%s\n" , c);
itoa(i, c, 8); //以8进制转换成字符数组
printf ( "0%s\n" , c);
itoa(i, c, 2); //以2进制转换成字符数组
puts (c);
i = atoi (c); //再将字符串转成整形
printf ( "%d\n" , i);
printf ( "%d\n" , sumof1(i)); //以2进制表示时1的个数
}
|