1.1 数据类型
在C语言中,数据类型可以分为基本类型、构造类型、指针类型和空类型,其中,基本类型可以分为整型、实型、字符型,构造类型包括数组、结构体、枚举类型。整型可以分为短整型(short)、长整型(long)、整型(int),实型可分为单精度型(float)、双精度型(double)、字符型(char)。
C语言有32个关键字,包括auto、break、case、char、const、continue、default、do、double、else、enum、extern、float、for、goto、if、int、long、register、return、short、signed、sizeof、static、struct、switch、typedef、unsigned、union、void、volatile、while。每个关键字都有特定的含义,例如,int用于声明整型变量或函数;float用于声明浮点型变量或函数;short用于声明短整型变量或函数;char用于声明字符型变量或函数返回值类型;long用于声明长整型变量或函数。
下面将详细介绍常量和变量。
常量是指在程序执行过程中,其值不可改变的量。例如,整型常量包括10、3、-5等;实型常量包括2.5、-6.3、0.15等;字符常量包括1、k、*等;字符串常量包括"987"、"hijst"、"I am a student"等。
除上述常量类型外,还有一种常量——符号常量。若在程序中用一个标识符来表示一个常量,这个标识符就是符号常量。符号常量名通常用大写字母或大写字母组合来表示。一般用下面的预处理命令的格式来定义符号常量:
#def ine标识符(符号常量)常量
一旦定义了符号常量,在整个程序执行过程中,该符号常量的值都保持不变。例如,指令#define A 100定义了A为符号常量,其值为100,因此,在程序运行中,A就表示常量100。
变量是指在程序运行期间其值可以改变的量,通常以标识符来命名。C语言规定标识符是由字母、数字或下划线三种字符组成,并且只能以字母或下划线开头,即起始字符不能为数字。在程序编译过程中,系统会为变量分配相应存储单元。例如,_a、cat、Year、name_1均为合法的变量名,而4ab、a.b、%a、@、x<y均为不合法变量名。因为,4ab是数字开头的,a.b包含了不合法的字符“.”,%a包含了不合法的字符“%”,“@”不是三种合法字符中的字符,x<y中包含了不合法的字符“<”。在定义变量时,不仅要使用字母、数字、下划线三种合法组成字符来定义,还要注意大小写字母是两个不同的标识符。
1.整型常量和变量
(1)整型常量
整型可以分为短整型(short)、长整形(long)、整型(int)。在C语言中,整型常量按进制可以分为十进制整型常量、八进制整型常量、十六进制整型常量。十进制整型常量包括10、980等;八进制整型常量以0开头,如032、0671、-055等;十六进制整型常量以0x开头,如0x32、0x671、-0x55等。
例1-1 将下面的八进制数转换成十进制数:
032,0671,-055
分析:
032表示八进制数32,转换成十进制数为:
3×81+2×80=26
0671表示八进制数671,转换成十进制数为:
6×82+7×81+1×80=6×64+7×8+1=384+56+1=441
-055表示八进制数-55,转换成十进制数为:
-(5×81+5×80)=-45
例1-2 将下面的十六进制数转换成十进制数:
0x32,0x671,-0x55
分析:
0x32表示十六进制数32,转换成十进制数为:
3×161+2×160=3×16+2×1=50
0x671表示十六进制数671,转换成十进制数为:
6×162+7×161+1×160=6×256+7×16+1=1536+112+1=1649
-0x55表示十六进制数-55,转换成十进制数为:
-(5×161+5×160)=-(80+5)=-85
(2)整型变量(https://www.daowen.com)
在不同的编译系统中对程序进行编译时,对于整型变量分配的存储单元大小是不同的,一般是分配4字节的存储单元,即32位大小的存储单元。例如,对于程序
int a=1,b=2,c=3;
程序编译过程中,系统会分配4字节的存储单元给变量a,再分配4字节的存储单元给变量b,最后分配4字节的存储单元给变量c,这个顺序不能改变,因为程序是按指令一条一条执行的。
2.实型常量和变量
实型数据用来表示具有小数点的实数,即以小数形式或指数形式出现的实数,可分为单精度型(float)、双精度型(double)。程序执行时,系统会为float型变量分配4字节,为double型变量分配8字节。例如,-0.33、56.2、10e3都是实型常量。又例如,对于
f loat a=3.5,b=9.8;
变量a和b都是实型变量。
3.字符常量和变量
用单引号包含的一个字符表示字符型常量,并且只能用单引号括起来一个字符。例如,a、W、2、*等都是字符常量。
还有一些字符前面加了一个“\”,这些字符称为转义字符,已不是字符原来表示的含义了。
\n表示换行符。
\0是字符串结束标志。
\t即Tab,表示横向跳格,每次跳8个字符的位置。
\ddd ddd表示1到3位八进制数所代表的字符,且字符不能超过3位。例如,\101表示八进制的101,转换成十进制后为65,ASCII码为65的字符是A,使用printf函数输出该字符:
print f("%c",\101);
结果为:
![]()
\xhh hh表示1到2位十六进制数所代表的字符。例如,\x41表示十六进制的41,转换成十进制后为65,ASCII码为65的字符是A,使用printf函数输出该字符:
pr int f("%c",\x41);
结果为:
![]()
数据类型为char的变量称为字符变量。一个字符变量在内存中占1字节的大小。例如,定义两个字符变量c1和c2时使用下面的定义方法:
char c1,c2;
对于字符的ASCII码表,读者可以自行去查看一下,十进制数从0到255,对应了256个字符。需要记住大写字母A~Z的ASCII码为65~90,小写字母a~z的ASCII码为97~122。大写字母和对应的小写字母的ASCII码正好相差32。
例1-3 下列代码的运行结果是什么?
#include stdio.h
void main()

对于同一个字符变量,按照字符型输出就是对应的字符,按照整型输出就是ASCII表中字符对应的ASCII码。