14/5
2017
上回讲到scanf格式化输入语句,利用格式化输入和输出的特性来转换进制。由于程序中肯定会用到不止字母啊,整数啊这样的字符,所以下面介绍数据类型,所谓数据类型,就是在程序前面告诉计算机,这个程序要用到哪种精度、取值范围、 数据所表示的信息
整型—— int长整型—— long int
短整型—— short int
无符号整型—— unsigned int
浮点型
单精度—— float
双精度—— dobule
字符型—— char
布尔型—— bool
枚举型—— enum
语言入门,我们并不需要认识全部数据类型,在这里介绍整形int,浮点型里面的单精度float,双精度double,字符型char。
首先是整形,它可以在程序前面定义如字母,整数这类,但用到小数,负数这类就要请到浮点型来帮我们定义了。可以用一个程序来说明它们的区别:
#include <stdio.h>
int main()
{
int a ; //定义整形变量a
float b ; //定义浮点型变量b
printf("输入a:"); //提示用户输入a的值
scanf("%d",&a);
printf("输入的a是:%d",a);
return 0;
}运行一下,我们先输入8,回车,可以看到可以输出8

但当我们输入有小数的数字时,程序只输出整数部分,由此可以说明整形int只认整数
接下来试试浮点型float
#include <stdio.h>
int main()
{
int a ; //定义整形变量a
float b ; //定义浮点型变量b
//printf("输入a:"); //提示用户输入a的值
//scanf("%d",&a);
//printf("输入的a是:%d",a);
printf("输入b:");
scanf("%f",&b);
printf("输入的b是:%f",b);
return 0;
}需要注意的是,用浮点型时不能用%d占位了,因为这是给整形用的
浮点型我们需要用%f来占位。运行程序,输入3.141592658,回车

发现程序输出只到小数后面第六位,这就是我们所说的精度了。如果想要改为double双精度变量,那么占位符需要改成%lf。
还有一个char字符型,有了这个我们就可以输入字母了
#include <stdio.h>
void main()
{
char c;
printf("输入c字符:");
scanf("%c",&c);
printf("c就是:%c",c);
}在这里,字符型的占位符是%c

下面就利用上面说到的数据类型来写一个整型,字符型,浮点型混合运算程序:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i=1;
char c='A';
float f=2.2f;
double sum=i+c+f;
printf("%f\n",sum);
return 0;
}
当不同数据类型混合运算时,程序会先将char转换为int整型,将int转换为double,再将float转成double,最后进行计算。

在这个程序里面,大写A会转成ASCII码,为65,这样程序就能运算了。
