不使用其他变量交换两个整型的值:
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的个数 } |