每种语言都有自己的一套符号,符号是组成程序的基本单位,它是由若干字符组成的具有一定意义的最小词法单元,如标识符、关键字、运算符、分隔符、常量、注释符等。这里组成符号的字符必须是这种语言字符集中的合法字符,在C++中规定了一个自己的字符集。
2.1 C++字符集
字符是可以区分的最小单位,也是组成词法符号的基本单位。C++的字符由下列字符组成。
1、大小写英文字母
a~z,A~Z
2、数字字符
0~9
3、特殊符号
空格 ! # % ^ & * _ - + = ~ > / \ | . , ; ? ' " ( ) [ ] { }
2.2 词法符号(简称符号)
C++共有6种词法符号,分别为
1、标识符
标识符是程序员定义的词法符号,用它来命名程序中的一些实体。常见的有函数名字、类名、变量名、常量名、对象名、标号名、类型名等。C++规定标识符由大小些字母、数字符号和下划线组成,第一个字符必须是字母和下划线。
定义标识符有一定的要求
(1) 标识符长度没有限制,但不同的编译系统有不同的要求,一般不超过31。
(2) 第一个字符必须是字母或下划线。
(3) 标识符中大小写是有区别的。XY,xy,xY,Xy都是不同的标识符。
(4) 标识符定义时应尽可能是用有意义的单词。
(5) 标识符不能与关键字相同。
(6) 中间不能有空格。
2、关键字
关键字是系统预留的词法符号。都有不同的用途和含义。
书上给出了ANSI标准的关键字(32个)及一些VC扩展的一些关键字(29个)。
3、运算符
运算符实际上是系统预定义的函数名字,这些函数作用于被操作的对象,将获得一个结果值。这部分内容在后面将详细介绍。
4、分隔符
分隔符又称标点符号。用来分隔单词和程序正文的。C++常用分隔符有:
(1)空格符:用来做单词之间的分隔。
(2)逗号:变量说明时分隔多个变量。
(3)分号:作为语句结束时的标记。在for 语句后面括号中三个表达式也用到分号。
(4)冒号:用作语句标号,在switch语句中也会使用到。
(5){ }:用来构造程序
5、常量
c++中,常量有数字常量、字符常量、字符串常量。
6、注释符
前面已经讲过,有两种方法,一种是C++语言新增的注释方法,即以//开头,占一行。另外就是原来C语言的注释方法,以一对/*和*/括起的注释信息。
2.3 基本数据类型
类型是对系统中的实体的一种抽象,它描述了某种实体的基础特性,包括值的表示、存储空间的大小以及对该值的操作。C++的数据类型包括基本数据类型和构造数据类型两类。构造数据类型又称复合数据类型,它是一种更高级的抽象。当变量被定义为某种类型时会受到系统对该类型的特别保护,确保其值不受非法操作。
C++语言的基本数据类型有如下四种:
·整型,说明符为int;
·字符型,说明符为char;
·浮点型(又称实型),说明符为float(单精度),double(双精度);
·空值型,说明符为void,用于函数和指针。
为了满足各种情况的需要,除了void型外,上述的三种类型前面还可以加上修饰符改变原来的含义。
signed 表示有符号
unsigned 表示无符号
long 表示长型
short 表示短型
上述4种修饰符都适用于整型和字符型,只有long 还适用于双精度浮点型。
数据类型规定的存储空间都是按字节算的,其占用的字节数会根据机器字长的不同会有所变化。也就是说,变量所占空间的大小与被定义的类型和机器有关。所以要注意那些类型会受机器的影响。
类型
说明
长度(字节)
备注(16位)
16位机
32位机
char
字符型
1
1
-128~127
unsigned char
无符号字符型
1
1
0~255
signed char
有符号字符型
1
1
-128~127
int
整型
2
4
-32768~32767
unsigned [int]
无符号整型
2
4
0~65535
signed [int]
有符号整型
2
4
-32768~32767
short [int]
短整型
2
2
-32768~32767
unsigned short [int]
无符号短整型
2
2
0~65535
signed short [int]
有符号短整型
2
2
-32768~32767
long [int]
长整型
4
4
-2147483648~2147483647
signed long [int]
有符号长整型
4
4
-2147483648~2147483647
unsigned long [int]
无符号长整型
4
4
0~4294967295
float
浮点型
4
4
-3.4*1038 ~3.4*1038
double
双精度型
8
8
-1.7*10308 ~1.7*10308
long double
长双精度型
10
10
-3.4*104932 ~1.1*104932
例如:下面是16位与32位计算机的几种数据类型比较。
说明:上面括号中的int 可以省略,即在int之前有修饰符的可以省略int。
在设计程序时,如果要确定某种数据类型所占的字节数,可以利用sizeof函数。例如:
cout
2.4 常量
常量是在程序中不能被改变的量。
常量有各种不同的数据类型,不同数据类型的常量由它的表示方法决定,常量被存储在不能被修改的匿名变量中,常量或常量符号可出现在表达式中。
下面介绍各种不同数据类型常量的表示方法。
1、整型常量
整型常量可以用十进制、八进制和十六进制来表示。
(1)十进制整型常量由0至9的数字组成,没有前缀,不能以0开始,没有小数部分。有正负之分。例如:234,-76等
(2)八进制整型常量,以0为前缀,其后由0到7的数字组成,没有小数部分,不能带符号。例如:0357,072等。
(3)十六进制整型常量,用0x或0X为前缀,其后由0到9的数字和A到F(大小写均可)字母组成,没有小数部分,不能带符号。例如:0x7A,0x8ef等。
整型常量中的长整型用L(或l)做后缀表示。例如,32786L。
整型常量中的无符号型用U(或u)做后缀表示。例如,4365U。
整型常量后缀可以是U和L(u或l)的组合,表示unsigned ling 类型的常量。
2、浮点型常量
浮点型常量是由整数部分和小数部分组成的,只有十进制表示。
浮点型常量有两种表示方式:一种是小数表示法,它由整数部分和小数部分组成的。这两部分可省去一部分,但不能都省去。如:5. ,.32 ,0.0,13.54等。另一种方法是科学表是法,他常用来表示很大或很小的数,表示方法是在小数表示法后加e(E)及指数部分。但要注意,e(E)前面必须有数字,指数部分可正可负,但都是整数。例如,3.2E-5,5.8E10,3e6等。
与整型常量一样,可以定义float和double型两种变量。在默认情况下,实型常量都为double型,如果要定义float型变量,则必须在实数后加f(F)。表示long double 则必须在实数后加l(L)。例如:
3.2f //float
3.2e2f //float
12.0e-4 //double
76.4L //long double
实型常数分为单精度(float)、双精度(double)和长双精度(long double)3类。一般float型占4个字节,提供7位有效数字。double型占8个字节,提供15位有效数字。long double型占10个字节,提供19位有效数字。
3、字符常量
字符常量是用单括号括起来的一个字符。
有两种表示方法,一种是用该字符的图形符号,如'a' ,'x','*','1','A'。另外还可以用字符的ASCII码表示,即用反斜符(\)开头,后跟字符的ASCII码,这种方法也称为转义序列表示法,具体方法是:
有两种形式:一种是用字符的八进制ASCII码,表示为:
\ddd
这里,ddd是八进制值。另一种使用字符的十六进制ASCII码值,表示为
\xhh
这里hh是两位十六进制值。如:'A' ,'\101' 和 'x41'都表示同一个字符常量。
转义序列表示法还可以用来表示一些特殊字符,用来显示特殊符号或控制输出格式。下面是常用的特殊转义字符。
字符形式
ASCII值
功 能
\a
0x07
响铃
\n
0x0a
换行
\t
0x09
制表符(横向)
0x0b
竖向跳格
\v
0x0b
竖向跳格
\b
0x08
退格
\r
0x0d
回车
\\
0x5c
字符\
\”
0x22
字符”
\’
0x27
字符’
\ddd
可表示任意字符
\xhh
可表示任意字符
注意:特殊转义字符必须是小写字母。