C语言入门:数据类型_c语言 数据类型
经过前面我们的学习,我想大家已经能编写一个具有最基本的增加、删除、查找、修改、保存等功能的信息管理程序。
今天讲一些C语言的基本概念:数据类型。
C语言的数据类型分为4种:
1、基本数据类型:
包括:整型、实型、字符型。
2、构造数据类型:
包括:数组、结构体。
3、指针类型
4、空类型。
其中用得多的是基本数据类型和构造数据类型,那么,这两种数据类型有什么不同呢?
还是用买房来打比方:基本数据类型就是定义一个变量就买一间房,也就是一间房住一个人(一个变量)。
比如:int a; float x;
a买了一间房,房间大小是int,房间里一次只能住一个整数。
x买了一间房,房间大小是float,房间里一次只能住一个实数。
而构造类型是定义一个变量,但是给了这个变量不止一间房。
比如定义一个数组变量:
int a[10];
a是数组类型的变量,虽然只定义了一个变量 a,但是它买了10间房,房间大小一样都是int型,每个房间可以住一个整数。
又比如定义一个结构类型变量:
struct STU
{ int xh; //学号
char *name[20]; //姓名
float cj; //成绩
};
struct STU s;
虽然只定义了一个变量s,但它买了3间房,一间房住整数,一间房住字符串(这件房又分为了20个小房,每个小房住一个字符,合起来就是一个字符串),还有一间房住实数。
1、整型
整型其实不止有int一种,一共有6种整型。
其中有符号的整型有3种:
基本整型(int)
短整型(short int或者只写short)
长整型(long int或者只写long)
无符号的整型也是3种:
无符号基本整型(unsigned int或者只写unsigned)
无符号短整型(unsigned short int或者只写unsigned short)
无符号长整型(unsigned long int或者只写unsigned long)
现在又出现了长长整型:long long int。
各种整型的取值范围不一样:
2、实型(也叫浮点型)
分为单精度实型(float)和双精度实型(double)。
两种实型的精度和取值范围不一样。
数据精度 与 取值范围是两个不同的概念:
3、字符型(char)
字符型在电脑里全部是以ASCII码的形式存放。
ASCII是一套基于拉丁字母的字符编码,共收录了 128 个字符,用一个字节就可以存储,它等同于国际标准 ISO/IEC 646。
ASCII 编码于 1967 年第一次发布,最后一次更新是在 1986 年,迄今为止共收录了 128 个字符,包含了基本的拉丁字母(英文字母)、阿拉伯数字(也就是 1234567890)、标点符号(,.!等)、特殊符号(@#$%^&等)以及一些具有控制功能的字符(往往不会显示出来)。
以上说的是标准 ASCII 编码,是学习编程语言必须了解的。
标准 ASCII 编码用一个字节中的 7 位就能存储,为了让第 8 位(最高位)也参与编码,就形成了扩展 ASCII 编码。
扩展 ASCII 主要包含了一些特殊符号、外来语字母和图形符号。
针对扩展的 ASCII 编码,不同的国家有不同的字符集,所以它并不是国际标准,感兴趣的朋友可上网自行查找。
大写字母A的ASCII码为65,B的ASCII码为66,以此类推,Z的ACSII码为90。
小写字母a的ASCII码为97,b的ASCII码为98,以此类推,z的ASCII码为122。
小写字母的ASCII码比对应的大写字母的ASCII码大32。
经常用这个关系来判断用户输入的是大写字母还是小写字母或其中字符。
例:输入一个字符,若它是大写字母则变成对应的小写字母输出,若它是小写字母则变成对应的大写字母输出,若它是其他字符则原样输出。
程序1:
程序中出现一个运算符:&&,这是一个逻辑运算符,它的意思是“而且”。
逻辑运算符共有3种:
逻辑非,运算符为!,“否定”的意思;
逻辑与,运算符为&&,“而且”的意思;
逻辑或,运算符为||,“或者”的意思。
若运行时输入大写字母时输出的是小写字母,如图:
若运行时输入小写字母时输出的是大写字母,如图:
若运行时输入的既不是大写字母也不是小写字母则原样输出,如图:
例:输入一串字符,以#结束,统计其中的大写字母个数、小写字母个数、数字字符个数和其他字符个数。
程序2:
运行结果:
在C语言里,整型变量和字符变量的定义和赋值是可以互换的:
什么意思呢?就是说如果有一个字符为大写字母A,那么它在电脑里的存放形式不是字母A,而是ASCII编码65,那么在电脑里用65(二进制形式为01000001)存放字母A。
当这个A以%c的形式输出时,输出的是大写字母A;而如果以%d的形式输出时。输出的是整数65(即A的ASCII编码)。
我们来看一个程序。
程序2:
运行结果:
我们可以看到字符型其实可以像整型一样做算术运算,也就是说,在C语言里,字符其实可以当作整型一样使用。
字符A加1就变成字符B,因为B的ASCII码比A的ASCII码大1。
4、总结
今天介绍了基本数据类型,总结如下: