目录
3.1 数据类型
C语言提供了丰富的数据类型,不仅可以表达并处理基本的数据(如整数、实数、字符等),还可以组织成复杂的数据结构(如表、树、栈等)。数据类型的分类情况如下图所示。
3.2 常量
程序中的常量分为直接常量和符号常量两种。
1. 直接常量:具体的数据,有整数、实数、字符和字符串四种类型。
(1)整数常量:即整数,C语言的整数可以使用三种数制表示。整数常量属于整数型数据类型。
十进制整数。如15、-378、0。
八进制整数。以0开头,如0147表示八进制数147,-013表示}八进制数-13。
十六进制整数。以0x或0X开头,如0x11代表十六进制数11,-0x33代表十六进制数-33。
(2)实数常量:即实数,它只有十进制这一种数制,但有两种不同的表现形式。实数常量属于实数型数据类型。
一般形式:由数字、小数点以及必要时的正负号组成。如-56.33、0.056、.056 、0.0等。
指数形式:用aEb 或 aeb 表示a*10b,其中,a、E(或e)、b中任何一部分都不允许省略。计算机输入和输出时,无法表示上角或者下角,故以字母e或E代表以10为底的指数。【注意:字母e之前必须有数字,e后边的指数必须为整数,如不能写成3e4.5。】
(3)字符常量:指一个有效字符。在程序中使用字符常量时,须用单引号加以限定。一个字符常量占一个字节的存储空间,在相应存储单元中存储的是该字符的ASCII码,即一个整数值,因此字符常量可以像整数一样参加数值运算。字符常量属于字符型数据类型。
普通字符:普通字符是用单引号括起来的一个字符。如'A'、'a'、'*'、'?'、'9'都是字符常量,不能写成'ab'或者'13'。【注意:单引号是界限符,字符常量只是一个字符,不包括单引号在内。】
转义字符:转义字符是除了以上形式的字符常量外另一类以字符\开头的字符序列。例如,'\n'代表一个换行符,'\’'、'\”'、'\\'则分别代表单引号、双引号和反斜杠。这是一种无法显示的“控制字符”,在程序中无法用一般形式的字符来表示,只能用这样的特殊形式来显示。
(4)字符串常量:若干有效字符的一个序列。字符串常量属于字符型数据类型。在程序中使用字符串常量时,须用双引号加以限定,如"China"、"A"、"$12"、"hello!"等。【注意:字符串常量是双引号中的全部字符,但不包括双引号本身,而且只能是双引号,不能是单引号,如'China'是错误的。】
字符串中的字符个数称为字符串的长度。不包括任何字符的字符串称为空字符串,其长度为0。
组成字符串的字符按照从左到右的顺序依次存放在一段连续的内存空间里,其中每个字符占用1字节的内存单元,即8个二进制位(或称比特)。
C语言的字符串在实际存储时,将自动在字符串尾部加一个结束标志'\0'(其ASCII码值为0),所以字符串的存储长度为字符串长度加1。例如"China"占用6字节存放字符C、h、i、n、a、\0,但在输出时不输出'\0'。
2. 符号常量:用#define指令,指定一个符号名称代表一个常量。
例如:#define PI 3.14 //注意行末没有分号。经过此处指定后,本文件中从此行开始所有的PI都代表3.14。
使用符号常量的好处有两点:①含义清楚:定义常量名的时候通常遵循“见名知意”原则,看到上面例子中的PI,可以猜出其代表圆周率。②需要改变程序中多处用到的一个常量时,可“一改全改”。
注意:符号常量不是变量,它不占用内存,只是一个临时的符号,预编译之后这个符号就不存在了,因此也不能给符号常量赋新的值。
3.3 变量
在程序运行过程中,其值会发生改变的数据称为变量。每个变量应该有一个名字,即变量名。变量在内存中占用一定的存储单元,在该存储单元中存放变量的值,即变量值。
C语言中的变量分为不同的数据类型,以存储不同类型的数据。C语言规定,任何类型的变量,在用其存储数据前,都要首先进行变量定义,说明变量的名称以及它要存储的数据类型(先定义,再使用)。
1. 简单变量及类型标识
C语言中的简单变量是指数据类型是整数型、实数型和字符型的基本变量,这三类变量的基本数据类型标识符分别是int、float和char。
(1)整数型变量
标识符类型
类型名称
存储空间大小
是否常用
完整形式
简化形式
signed int
int
有符号基本整数型
2个或4个字节
是
signed short int
short
有符号短整数型
2个字节
否
signed long int
long
有符号长整数型
4个字节
是
unsigned int
unsigned int
无符号基本整数型
2个或4个字节
否
unsigned short int
unsigned short
无符号短整数型
2个字节
否
unsigned long int
unsigned long
无符号长整数型
4个字节
否
(2)实数型变量
实数型变量主要有单精度型和双精度型两种,分别用float和double作为类型标识符。不同类型的实数型变量,占用存储空间的长度不同,表示的数值精度和数值范围也不同。当数据精度要求较高时,应使用double型变量。
在C语言中,实数常量的默认数据类型为double型。所以,在程序中用一个实数值为float型的变量赋值时,编译系统会给出一个警告信息,提示位数丢失。
(3)字符型变量
字符型变量的数据类型标识符是char,每个字符型变量只能存储一个字符,占用一个字节,在这一位置存储的是字符的ASCII编码。例如,当某个变量存储字符‘A’时,实际存储的是‘A’的ASCII码值65。因此,C语言允许char型量与整数型量进行算数运算。
2. 简单变量的定义
简单变量的一般定义格式:
数据类型标识符 变量名表;
当“变量名表”包括多个变量时,各变量之间用“,”分隔。
3. 简单变量的赋值
变量赋值的一般格式:变量名=表达式
注意:“=”并非指两侧相等,而是包含了计算和赋值两个过程。首先计算表达式的值,然后将计算的结果保存到“=”左侧的变量中。
(1)定义变量时为变量赋初值
float x=29.6; //该语句定义了float型变量x,同时将其初始化为29.6
(2)先定义变量,然后再为变量赋值
int sum,i; //定义int型变量sum和i
sum=9; //将整数9赋值给变量sum