chapter 2 C++语言简单程序设计
C++语言特点
- 兼容C语言
- 支持面向对象的方法
- 同时支持面向过程与面向对象的程序设计,而非纯正的面向对象语言
HelloWorld
#include<iostream>
using namespace std;
int main(){
cout<<"Hello World\n"<<endl;//cout为一个输出流对象,将接受的内容输出到标准输出设备上
return 0;
}
词法记号
此法记号是最小的词法单元包括:
- 关键字
- 标识符
- 文字
- 操作符(运算符)
- 分隔符
- 空白 (空白是对空格、制表符、垂直制表符、换行符、回车符和注释的总称)
C++基本数据类型
类型名 | 大小(B) | 取值 |
---|---|---|
bool | 1 | false(0)、true(1) |
char | 1 | -128~127 |
int | 4 | INT_MIN~INT_MAX |
float | 4 | FLT_MIN~FLT_MAX |
double | 8 | |
auto | ~ |
修饰符 | 含义及可修饰类型 |
---|---|
unsigned | 无符号,修饰int、char、short、long |
signed | 有符号,修饰int、char、short、long |
short | 短,修饰int(int可省略) |
long | 长,修饰int(int可省略)、double |
long long | 长长,修饰int(int可省略) |
注意:
- int默认为signed,而char与int、short、long不同,未规定其符号,其会因不同的编译环境而异。
- climits头文件引入了一系列通过#define预处理指令▲定义的符号常量(symbolic constant),这些常量可以帮助我们确定各种类型的取值范围及存储比特数,使用float类型的宏定义常量需使用<cfloat>
常量
常量指在程序运行的整个过程中其值始终不改变的量
整形常量
十进制、
八进制(以0开头)、
十六进制(以0x开头)
对整形常量可以使用后缀:L(l)表示类型至少是long,LL(ll)表示类型至少是long long,用U(u)表示unsigned类型
实型常量
即以文字形式出现的常量,有两种表示形式
一般形式 | 指数形式 |
---|---|
12.5、-12.5等 | 0.345E-1、0.345e2等 |
实型常量默认为double类型、使用后缀F(f)可以使其成为float类型
字符型常量
字符型常量为单引号括起的一个字符,如’a’、‘0’
字符串常量
字符串常量又双引号括起来的字符序列,如"hello"、“world”
字符串与字符在内存中的存储形式不同,字符串结尾会存储一个’\0’作为结束标志
布尔(bool)常量
false(0)与true(1)
变量
变量声明与定义
如果一个变量除了在定义它的源文件中可以使用,还能被其他文件使用,那么就称这个变量是外部变量。在其它文件中使用其需要使用extern关键字声明。外部变量是可以为多个源文件所共享的全局变量。
对外部变量的声明可以是定义性的声明,即在声明的同时定义(分配内存,初始化),也可以是引用性声明(引用在别处定义的变量)
变量初始化
变量存储类型
- register 存放在通用寄存器
- extern 在所有函数和程序段可用
- static 在内存中固定地址存放,在整个程序运行期间有效
- thread_loacl 具有线程存储生存期
- mutable 只能用于类数据成员
符号常量
constexpr与常量表达式
运算符与表达式
数据类型转换
隐式类型转换
- 变量初始化或赋值时,值与变量类型不一致
- 表达式中不同类型的数据进行运算时
- 参数传递时
显式类型转换
- C语言风格
(数据类型)变量名
- C++语言风格
数据类型(变量名)
- 显式类型转换是不安全的,会丢失数据精度
- 显式类型转换是暂时的,一次性的
语句
语句与表达式区别:表达式仍可以作为另一个复杂表达式的一部分参与运算,而语句则不能,以’;'结尾
数据的输入输出
格式化输入输出
算法基本控制结构
顺序结构
选择结构
- if结构
- if…else if…else结构
- switch case结构
循环结构
-
while结构
-
do…while结构
-
for结构
特殊的范围for语句,可以用于数组、vector、string等类型的对象,其共同点是拥有能返回迭代器的begin和end成员
for(auto &a:s)
其中s为以上所述的类型之一,等价于
for(auto beg=s.begin(),end=s.end();beg!=end;++beg)
其他控制语句
- break
- continue
- goto语句
变量的实现机制
在程序中指明不同变量的数据类型,方便在编译阶段编译器根据不同的数据类型选取适当的指令
类型别名
typedef的两种用法
-
为已有类型声明别名
typedef typyname newtypename //则可以在程序中将newtypename作为typename的别名 如typedef int zhengshu using newtypename=typename //与上述方法效果一致,但是
-
任何声明变量的语句前加上typedef后原来的变量都将变成一种新类型
tyepdef int*c;//声明了一种名为c的变量类型,可以用于定义int类型指针 c(d);//声明d为int* 类型
decltype
-
作用是返回已有变量的类型
decltype(i) j;//作用是声明一个与i变脸相同类型的变脸j