2021-01-12

1. C++简介

1.1 起源

创始人:Bjarne Stroustrup
创始公司:贝尔实验室

1.2 C++与C

C++是C语言的继承,也是 C 的一个超集,事实上,任何合法的 C 程序都是合法的 C++ 程序。它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。
C++擅长面向对象程序设计的同时,还可以进行基于过程的程序设计。
C++ 是一种静态类型的、编译式的、通用的、大小写敏感的、不规则的编程语言,支持过程化编程、面向对象编程和泛型编程。

2.语言基础

2.1基本语法

对象:对象具有状态和行为。
:描述对象行为/状态的模板/蓝图。类的实例是对象。
方法:表示一种行为。一个类可以包含多个方法。可以在方法中写入逻辑、操作数据以及执行所有的动作。
即时变量:每个对象都有其独特的即时变量。多个即使变量可创建对象的状态。

2.2注释

C++ 支持单行注释和多行注释。注释中的所有字符会被 C++ 编译器忽略。
C++ 注释一般有两种:
//-用于单行注释,以//开始,一直到行末结束
/* … …* /-用于多行注释,
例如:

#include <iostream>//头文件 <iostream>
using namespace std;//告诉编译器使用 std 命名空间。
 
int main() //主函数,程序从这里开始执行。
{
  cout << "Hello World!";/*输出“Hello World!”*/
  return 0;
}

2.3数据类型

2.31整型

整数常量

整数常量是不带小数的数值,用来表示正负数。例2-2中Ox55、0x55ff、1000000都是c++语言的整数常量。

c++语言的整数常量有三种形式:十进制、八进制、十六迸制。

(1)十进制整数是由不以0开头的0~9的数字组成的数据。

(2)八进制整数是由以0开头的0~7的数字组成的数据。

(3)十六进制整数是由以0x或0x开头的09的数字及AF的字母(大小写字母均可)组成的数据。

例如:

0,63,83是十进制数。

00,077,0123是八进制数。

0x0,Ox0,0x53,0x53,0x3f,0x3f是十六进制数。

整数常量的取值范围是有限的,它的大小取决于此类整型数的类型,与所使用的进制形式无关。

整型变量类型

整型变量类型有byte,short,int,long四种说明符,它们都是有符号整型变量类型。

(1)byte类型。

byte类型说明一个带符号的8位整型变量。由于不同的机器对多字节数据的存储方式不同,可能是从低字节向高字节存储,也可能是从高字节向低字节存储。这样,在分析网络协议或文件格式时,为了解决不同机器上的字节存储顺序问题,用byte类型来表示数据是合适的。

(2)short类型。

short类型说明一个带符号的16位整型变量。short类型限制了数据的存储应为先高字节,后低字节。

(3)int类型。

int类型说明一个带符号的32位整型变量。int类型是一种最丰富、最有效的类型。它最常用于计数、数组访问和整数运算。

(4)long类型。

long类型说明一个带符号的64位整型变量。对于大型计算,常常会遇到很大的整数,并超出int所表示的范围,这时要使用long类型。

2.32浮点型

浮点数常量

浮点数是带有小数的十进制数,可用一般表示法或科学记数法表示。0.23f、0.7e-3都是c++语言的浮点数常量。

(1)一般表示法:十进制整数+小数点+十进制小数。

(2)科学记数法:十进制整数+小数点+十进制小数+E(或e)+正负号+指数。

例如:3.14159,0.567,9777.12是一般表示法形式,1.234e5,4.90867e-2是科学记数法形式。

c++语言的浮点数常量在机器中有单精度和双精度之分。单精度以32位形式存放,用f/F做后缀标记(可以省略);双精度则以64位形式存放。当一个浮点数常量没有特别指定精度时,则它为双精度浮点数常量。

浮点变量类型

浮点变量也称实数变量,用于需要精确到小数的函数运算中,有float和double两种类型说明符。

(1)float类型。

float类型是一个位数为32位的单精度浮点数。它具有运行速度较快,占用空间较少的特点。

(2)double类型。

double类型是一个位数为64的双精度浮点数。双精度数在某些具有优化和高速运算能力的现代处理机上运算比单精度数快。双精度类型double比单精度类型float具有更高的精度和更大表示范围,常常使用。

2.33字符型

字符型常量

字符型常量是指由单引号括起来的单个字符。

例如:‘a’,‘A’,‘z’,’$’,’?’。

注意:'a’和’A’是两个不同的字符常量。

除了以上形式的字符常量外,c++语言还允许使用一种以""开头的特殊形式的字符常量。这种字符常量称为转义字符,用来表示一些不可显示的或有特殊意义的字符。

字符型变量

字符型变量的类型说明符为char,它在机器中占8位,其范围为0~255。

注意:字符型变量只能存放一个字符,不能存放多个字符,例如:

这样定义赋值是错误的。

2.34布尔型

布尔常量

布尔常量只有两个值:“true"和"false”,表示"真"和"假",均为关键词,在机器中位长为8位。

布尔型变量

布尔型变量的类型说明符为booI,用来表示逻辑值。
总结:

类型关键字
整型long/int/short/byte
字符型char
浮点型float
双浮点型double
布尔型bool
无类型void
宽字符型wchar_t

注意:字符型char只占八位,存储ascii码的,而宽字符型是为了存储多国语言的代码unicode
以下是各变量类型在内存中存储值时需要占用的内存,以及该类型的变量所能存储的最大值和最小值。

类型位(字节)范围
char1-128 – 127 或 0 – 255
unsigned char10–255
signed char1-128 – 127
int4-2147483648 – 2147483647
unsigned int40 – 4294967295
signed int4-2147483648 – 2147483647
short int2-32768 – 32767
long int8-9,223,372,036,854,775,808 --9,223,372,036,854,775,807
float4-3.4* 10^38 – 3.4* 10^38
double8-1.7*10^308 – 1.7 *10^308
wchar_t2或41个宽字符

2.4修饰符类型

修饰符有:
signed
unsigned
long
short
修饰符 signed、unsigned、long 和 short 可应用于整型,signed 和 unsigned 可应用于字符型,long 可应用于双精度型。

修饰符 signed 和 unsigned 也可以作为 long 或 short 修饰符的前缀。

2.5关键字

在这里插入图片描述

2.6变量类型

变量提供一个具名的、可供程序操作的存储空间。C++中的每个变量都有其数据类型, 数据类型决定着变量所占内存空间的大小和布局方式、该空间能存储的值的范围,以及变 量能参与的运算。对C++程序员来说,“变量(variable)”和“对象(object)”可以互 换使用。

变量的名称可以由字母、数字和下划线字符组成。它必须以字母或下划线开头。注意:大写字母和小写字母是不同
以下为几种基本的变量类型

类型相关描述
bool储存ture或false
char通常是一个字符(八位)
int对机器而言,整数的最自然的大小。
float单精度浮点值。单精度是这样的格式,1位符号,8位指数,23位小数
double双精度浮点值。双精度是1位符号,11位指数,52位小数。
void指数据类型的缺失
wchar_t宽字符类型。

变量类型转换
类型所能表示的值的范围决定了转换的过程:
·当我们把一个非布尔类型的算术值赋给布尔类型时,初始值为0则结果为false, 否则结果为true。
·当我们把一个布尔值赋给非布尔类型时,初始值为false则结果为0,初始值为 true则结果为1。
·当我们把一个浮点数赋给整数类型时,进行了近似处理。结果值将仅保留浮点数中 小数点之前的部分。
·当我们把一个整数值赋给浮点类型时,小数部分记为0。如果该整数所占的空间超 过了浮点类型的容量,精度可能有损失。
·当我们赋给无符号类型一个超出它表示范围的值时,结果是初始值对无符号类型表 示数值总数取模后的余数。例如,8byte大小的unsigned char可以表示0至–255区间内的值,如果我们赋了一个区间以外的值,则实际的结果是该值对256 取模后所得的余数。因此,把-1赋给8byte大小的unsigned char所得的结果 是255。
·当我们赋给带符号类型一个超出它表示范围的值时,结果是未定义的(undefined)。 此时,程序可能继续工作、可能崩溃,也可能生成垃圾数据。

2.61变量定义

变量定义就是告诉编译器在何处创建变量的存储,以及如何创建变量的存储。
变量定义的基本形式是:首先是类型说明符 (type specifier),随后紧跟由一个或多个变量名组成的列表,其中变量名以逗号分隔,最后以分号结束。列表中每个变量名的类型 都由类型说明符指定,定义时还可以为一个或多个变量赋初值

初始值
当对象在创建时获得了一个特定的值,我们说这个对象被初始化(initialized)了。用 于初始化变量的值可以是任意复杂的表达式。当一次定义了两个或多个变量时,对象的名 字随着定义也就马上可以使用了。因此在同一条定义语句中,可以用先定义的变量值去初 始化后定义的其他变量。
注意:初始化和赋值是两个完全不同的操作

2.62 变量声明

变量声明向编译器保证变量以给定的类型和名称存在,这样编译器在不需要知道变量完整细节的情况下也能继续进一步的编译。变量声明只在编译时有它的意义,在程序连接时编译器需要实际的变量声明。
注意:变量只能被定义一次,但可多次声明

#include <iostream>
using namespace std;
 
extern int a, b;// 变量声明
extern int c;// 变量声明
extern float f;// 变量声明
  
int main ()
{
  int a, b;// 变量定义
  int c;// 变量定义
  float f;// 变量定义

  a = 10; // 实际初始化
  b = 20; // 实际初始化
  c = a + b;// 实际初始化

  cout << c << endl ;
 
  f = 70.0/3.0;
  cout << f << endl ;
 
  return 0;
}

2.7 常量

常量是固定值,在程序执行期间不会改变。这些固定的值,又叫做字面量。

常量可以是任何的基本数据类型,可分为整型数字、浮点数字、字符、字符串和布尔值。

常量就像是常规的变量,只不过常量的值在定义后不能进行修改。
整数常量
整数常量可以是十进制、八进制或十六进制的常量。前缀指定基数:0x 或 0X 表示十六进制,0 表示八进制,不带前缀则默认表示十进制。

整数常量也可以带一个后缀,后缀是 U 和 L 的组合,U 表示无符号整数(unsigned),L 表示长整数(long)。后缀可以是大写,也可以是小写,U 和 L 的顺序任意。
例如:
85 // 十进制
0213 // 八进制
0x4b // 十六进制
10 // 整数
10u // 无符号整数
10l // 长整数
10ul // 无符号长整数
浮点常量
浮点常量由整数部分、小数点、小数部分和指数部分组成。您可以使用小数形式或者指数形式来表示浮点常量。

当使用小数形式表示时,必须包含整数部分、小数部分,或同时包含两者。当使用指数形式表示时, 必须包含小数点、指数,或同时包含两者。带符号的指数是用 e 或 E 引入的。
例如:
3.14159
314159E-5L
布尔常量
布尔常量共有两个,它们都是标准的 C++ 关键字:
true 值代表真
false 值代表假。
字符常量
字符常量是括在单引号中。如果常量以 L(仅当大写时)开头,则表示它是一个宽字符常量(例如 L’x’),此时它必须存储在 wchar_t 类型的变量中。否则,它就是一个窄字符常量(例如 ‘x’),此时它可以存储在 char 类型的简单变量中。

字符常量可以是一个普通的字符(例如 ‘x’)、一个转义序列(例如 ‘\t’),或一个通用的字符(例如 ‘\u02C0’)。

在 C++ 中,有一些特定的字符,当它们前面有反斜杠时,它们就具有特殊的含义,被用来表示如换行符(\n)或制表符(\t)等。下表列出了一些这样的转义序列码:
在这里插入图片描述
例如;

#include <iostream>
using namespace std;
 
int main()
{
   cout << "Hello\tWorld\n\n";
   return 0;
}

当上面的代码被编译和执行时,它会产生:

Hello World

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值