这篇我们再说说数据类型,我们看看下面这个例子:
#include<stdio.h>
int main()
{
int a;
a=9/2;
printf("%d\n",a);
return 0;
}
这里声明的变量为整型变量,所以输出a的值为4,没有小数位。有些人说用变量a用float呢?
#include<stdio.h>
int main()
{
float a;
a=9/2;
printf("%f\n",a);
return 0;
}
这样输出小数点后面依然没有数值。那怎么办呢?这就是这一篇要讲的强制类型转换。我们在C语言中经常遇到上面的情况,我们想得到更加精确的结果。上面的情况我们只需要把其中一个数字改为小数形式,让编译器知道他是小数就可以了。
#include<stdio.h>
int main()
{
float a;
a=9.0/2;
printf("%f\n",a);
}
这只是常量的方式,那么如果是变量呢?
#include<stdio.h>
int main()
{
int a,b;
float c;
a=9;
b=2;
c=(float)a/b;
printf("%f\n",c);
return 0;
}
所以(float)a中的(float)就是强制类型转换,它将a由一个整型变化成了单精度浮点数。注意强制类型转换可能会损失精度。所有的数值类型都可以互相转换。
下面我们来讲讲字符类型,前面我们说了字符类型占一个字节,一个字节8位。我们说过计算机底层只能存储二进制,那么字符怎么表示呢?聪明的人类发明了ASCll编码,标准ASCll表由7位(最高位通常保留为0,传输时作为奇偶校验位)二进制将128个符号和字符编码而成。如下表:
如果觉得上面的表看的比较晕的话,我们来看看下面的代码:
#include<stdio.h>
int main()
{
char b='a';
printf("%d\n",b);
return 0;
}
运行上面的代码,我们就知道屏幕上显示的是97,二进制为01100001,而上面的表中97正好对应着小写的a。这个表其实不用记住,大家知道字符在计算机里面是怎么存储的就好了。
总结
这篇主要是说明强制类型转换和ASCll编码,需要自己下来多敲敲代码,熟悉强制类型转换,也必须清楚了解ASCll编码。