IT,即为Information Technology,中文含义为信息技术。在当今这个信息时代,信息就是财富,信息就是社会发展的动力。信息离不开数据,银行往来的金额账目,娱乐时听到的好听的音乐,甚至是远程医疗时病人的血压,这些都是数据。程序离不开数据,如果没有了数据,程序设计无从谈起。
这里,我们用一个实际的程序来开始对C语言中基本数据类型的了解。
====================================================================================================
/* savemoney.c -- 银行存钱 */
#include <stdio.h>
int main(void)
{
float amount;// 存入的金额
int years;// 保存时间
printf("你要存入多少钱?\n");
scanf("%f", &amount);
printf("你要保存多少年?\n");
scanf("%d", &years);
printf("您好,这笔钱总共%f元,您要存%d年。\n", amount, years);
return 0;
}
====================================================================================================
在这个程序中,我们主要用到了两种基本数据类型:float和int。前者是单精度浮点类型,后者是整型。
在程序设计中经常会提到属于常量变量和变量。常量,顾名思义就是值为恒定的量,比如圆周率π,还有一年中月份的数量;变量,就是说这个值是发生变化的,比如每年的降水量,北京市空气质量优秀的天数。
要想告诉程序我们想用哪种数据类型,这个时候我们就需要用到数据类型关键字了。下面是C语言中的数据类型关键字
K&R关键字 | C90关键字 | C99关键字 |
---|---|---|
int | signed | _Bool |
long | void | _Complex |
short | _Imaginary | |
unsigned | ||
char | ||
float | ||
double |
K&R C中提到的数据类型有int、long、short、char、float、double。这些类型可以分为两类,一类是整数类型,另一类时浮点类型。CPU对这两大类型的处理方式是不同的,数据在内存中的表示方式也是不同的。
整数类型包括int、long、short、char,他们之前的区别在于表示数据的范围是不同的。
char类型一般表示由1个字节表示的数据,范围是-128到127,共256个数。另外,char类型还表示字符类型。
short类型一般表示由2个字节表示的数据,范围是-32768到32767,共65536个数。
int类型一般表示由4个字节表示的数据,范围是-2147483648到2147483647,共4294967296个数。
long类型一般表示为由8个字节表示的数据,范围是-9223372036854775808到9223372036854775807,共18446744073709551616个数。
需要注意的是,C语言是个可移植的程序设计语言。其可移植性表现的一个方面是,其基本数据类型表示的数的范围是随着环境的变化而变化的。比如说,在现在的机器上int类型表示由4个字节表示的数据,但在以前的机器上int类型可能是表示由2个字节表示的数据。虽然C语言标准并没有明确定义类型范围,但它却规定short类型的范围大于等于char类型,小于等于int类型;long类型大于等于int类型。而int类型的字节数一般为计算机的字长的字节数。在某个具体实现上,整数数据类型的范围是确定的,它定义在头文件<limits.h>中。
关键字unsigned说明所表示的数是个无符号整数类型。比如,如果int类型表示从-2147483648到2147483647的数,那么unsignedint表示从0到4294967295的数。
浮点类型包括float类型和double类型,他们之间的区别主要是表示数据的精度不同。
float类型必须至少能表示6位有效数字,取值范围至少10的-37次方到10的+37次方。
double类型表示的数的范围大于或等于float类型,但它必须至少表示10位有效数字。
在C90中又定义了signed和void类型。signed表示整数是个有符号整数类型。其实在默认情况下,整数类型都指的是有符号整数类型。也就是说,在编写程序的时候,signed是可以省略的。void表示数据是个空类型,void类型一般用在函数的无返回值的情况下。
在C99中又定义了_Bool类型、_Complex类型和_Imaginary类型。
_Bool类型是一种无符号类型,它只包含两个值0和1,对应于false(假)和true(真)。
_Complex类型和_Imaginary类型分别提供了对复数和虚数的支持。
总结一下,我们现在可以用C提供的数据类型表示一般情况下使用到的数据。
整数类型范围从小到大,依次为char、short、int、long。(最新的C标准支持的整数类型不仅仅为这4个,其他的为多个long与int之间的组合,比较复杂不在此说明。)
浮点类型范围从笑道大,依次为float、double。(最新的C标准支持的整数类型不仅仅为这2个,比较复杂不在此说明。)
布尔类型为_Bool。
复数类型为_Complex。
虚数类型为_Imaginary。
需要注意的是,各个编译器对C标准的支持情况有所不同,后三者某些编译器可能仍然不支持。