不使用其他變量交換兩個(gè)整型的值:
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); } |
整形和字符數(shù)組型轉(zhuǎn)換:
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) //求一個(gè)數(shù)轉(zhuǎn)換成二進(jìn)制以后1的個(gè)數(shù) { int countx = 0; while (x) { countx ++; x &= x-1; //每位與一次x - 1;就能消掉最后一個(gè)1 } return countx; } void main(){ char c[10]; int i = 999; itoa(i, c, 10); //以10進(jìn)制轉(zhuǎn)換成字符數(shù)組 puts (c); itoa(i, c, 16); //以16進(jìn)制轉(zhuǎn)換成字符數(shù)組 printf ( "0x%s\n" , c); itoa(i, c, 8); //以8進(jìn)制轉(zhuǎn)換成字符數(shù)組 printf ( "0%s\n" , c); itoa(i, c, 2); //以2進(jìn)制轉(zhuǎn)換成字符數(shù)組 puts (c); i = atoi (c); //再將字符串轉(zhuǎn)成整形 printf ( "%d\n" , i); printf ( "%d\n" , sumof1(i)); //以2進(jìn)制表示時(shí)1的個(gè)數(shù) } |