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,这样程序就能运算了。