c语言的强大之一就是各种类型都可以相互转化,真的是没有不可转化的东西,这在其它语言里,实现起来,很麻烦,在这里,都是很简单的事,可见,c语言虽然简单,却是深藏着很多硬功夫。
1、char转化int
char类型转化成int类型,一想感觉不好弄,从1个字节转化成四个字节,那怎么弄?
然而,这却是c语言经常的操作:
1 #include <stdio.h>
2 #include <stdlib.h>
3
4 int main()
5 {
6 char cA = 100;
7 printf("cA=%c\r\n", cA);
8 int iB = 0;
9 iB = (int)cA;
10 printf("iB=%d\r\n", iB);
11
12 }
root@mkx:~/learn/convert# gcc convert1.c -o convert1
root@mkx:~/learn/convert# ./convert1
cA=d
iB=100
root@mkx:~/learn/convert#
2、int转化char
从1字节转化到4字节,还可以理解,c语言还可以进行更为危险的操作,就是4个字节转化成1个字节,这个风险,只能程序员把控了,其实也是c程序经常遇到的事:
1 #include <stdio.h>
2 #include <stdlib.h>
3
4 int main()
5 {
6 int a = 100;
7 char b = 0;
8 b = (char)a;
9 printf("b=%d\r\n", (int)b);
10 }
~
root@mkx:~/learn/convert# gcc convert2.c -o convert2
root@mkx:~/learn/convert# ./convert2
b=100
root@mkx:~/learn/convert#
这个操作,其实风险挺大的,程序员要保证a的值为:-128~127,不能超出这个范围,这样,就会把这个范围的整形转化到char里面。
这里实际就是用到的c语言的强转功能,不管什么值,都是一块内存,可以用不同的类型的去解释,强转,就是把其它类型强制转化成当前类型,强制有风险,却也是功能强大的地方。
|