目录
C++语言概述
C语言具有许多优点:执行效率高、可以直接访问物理地址等。尽管如此,由于C语言毕竟是一个面向过程的编程语言,因此与其他面向过程的编程语言一样,已经不能满足运用面向对象方法开发软件的需要。
C++便是在C语言基础上为支持面向对象的程序设计而研制的、通用的程序设计语言,于1980年在AT&T贝尔实验室中诞生。
C++的两大特点:1、尽量兼容C(因此C++不是一个纯正的面向对象的编程语言);2、支持面向对象的方法。简单来说就是,既支持面向过程的程序设计,又支持面向对象的程序设计。
关键字
即预先声明的单词。
常用的有:bool、break、case、catch、char、class、const、continue、default、delete、do、double、else、enum、extern、false、float、for、friend、goto、if、inline、int、long、namespace、new、operator、private、protected、public、return、short、signed、sizeof、static、struct、switch、template、this、throw、true、try、typedef、union、unsigned、using、virtual、void、while等。
注意:true和false都是小写;没有define这个关键字。
标识符
即程序员定义的单词,用来命名程序正文中的一些实体,如函数名、变量名、类名、对象名等。
构成规则如下:
1、以大小写字母或下划线开始。
2、可以由大小写字母、下划线或数字组成。
3、字母的大小写代表不同的含义。
4、不能是C++关键字。
空白
凡是可以出现空格的地方,都可以出现换行。如
int i;
也可以写成
int
i
;
基本数据类型
1个字节:bool,char,signed char,unsigned char
2个字节:short,unsigned short
4个字节:int,unsigned int,long,unsigned long,float
8个字节:double,long double
char型从本质上说也是整数类型,它是长度为1个字节的整数,通常用来存放字符的ASCII码。
signed和unsigned可以用来修饰char和int(也包括short和long),signed表示有符号数,unsigned表示无符号数。有符号整数在计算机内以二进制补码形式存储,其最高位为符号位,0表示正,1表示负。无符号整数只能是正数,在计算机内以绝对值形式存放。
常量
即在程序运行的整个过程中其值始终不可改变的量。
1、整型常量
十进制整数常量(±若干0~9的数字)
八进制整数常量(0若干0~7的数字)
十六进制整数常量(0x若干0~9的数字及A~F的字母,大小写均可)
由于八进制和十六进制的整型常量一般用来表示无符号整数,所以前面不应带正负号。
2、实型常量
一般形式:12.5,-12.5等。
指数形式:125E-1,-1.25E+1等。
当以指数形式表示一个实数时,整数部分和小数部分可以省略其一,但不能都省略。例如1.E1和.25E1都是正确的,但是不能写成E1这种形式。
3、字符常量
是单引号括起来的一个字符。还有一些是不可显示字符,也无法通过键盘输入,例如响铃、换行、制表符、回车等,C++提供一种称为转义序列的表示方法来表示这些字符,见下表:
转义字符的引号问题:单双引号都可以,但是存在差异
int a=sizeof('\t');//a的值为1
int b=sizeof("\t");//b的值为2
4、字符串常量
简称字符串,使用一对双引号括起来的字符序列。
字符串与字符是不同的,它在内存中的存放形式是:按串中字符的排列顺序存放,每个字符占一个字节,并在末位添加'\0'作为结尾标记。
5、布尔常量
6、符号常量
const 数据类型说明符 常量名=常量值;
const float PI=3.1415926;//例如
符号常量在声明时一定要赋初值,且在程序中不能改变其值。
const float PI;//此时PI已经是常量
PI=3.1415926;//错!常量不能被赋值
变量
顾名思义,变量就是在程序运行过程中其值可以变化的量。变量是需要名字来标识的。
首先要清楚声明不同于定义:声明一个变量只是将变量名(标识符)的有关信息告诉编译器,是编译器“认识”该标识符。而定义一个变量意味着给变量分配内存空间,用于存放对应类型的数据,变量名就是对相应内存单元的命名。
注意:C++中有字符串常量,但是没有字符串变量。
运算符优先级与结合性
() [] . ->
! ~ ++ -- -(负号) (类型) * &(取地址) sizeof
* / %
+ -
<< >>
< <= > >=
!= ==
&(按位与)
^
|
&&
||
?:
= += -= *= /= %= >>= <<= &= ^= |=
,
注:优先级由高到低;默认结合性由左至右,蓝色部分表示结合方向自右至左。
隐含转换
基本原则:低类型转换为高类型。类型越高,数据表示的范围越大,精度也越高。因为在转换过程中数据的精度没有损失,所以说这种转换是安全的。
类型由低到高:char -> short -> int -> unsigned -> long -> unsigned long -> float -> double
其他类型转换为布尔类型:非0转换为true,0转换为false。
赋值运算要求左值与右值的类型相同,若不同,编译系统会自动进行类型转换,这时一律将右值转换为左值的类型。
枚举类型
声明形式如下:
enum 枚举类型名 {变量值列表};
例如:
enum Weekday {SUN,MON,TUE,WED,THU,FRI,SAT};
枚举类型应用说明:
1、对枚举元素按常量处理,不能对它们赋值。
SUN=0;//非法!SUN是枚举元素
2、枚举元素具有默认值,依次为0,1,2,...。例如上例中SUN为0,MON为1,...,SAT为6。
3、也可以在声明时另行定义枚举元素的值,如:
enum Weekday {SUN=7,MON=1,TUE,WED,THU,FRI,SAT};//此时TUE为2,后面依次加1
4、枚举值可以进行关系运算。
5、枚举类型数据可以和整数类型数据相互转换。枚举类型可以隐含转换为整型数据;但整型数据到枚举数据的转换,则需要采用显式转换的方式。