第一章 C++基础 #
1.1 C++ 简介 #
1.1.1 编程语言的分类 #
- 面向过程类型的编程语言,比如 C, Fortran. 这些语言都已经过于古老了
- 面向对象类型(Object Oriented Programming)的编程语言,目前主流的所有编程语言都或多或少地涉及了面向对象的原理。包括Python, C++, Java等。
关于面向对象的s补充: 简而言之,面向对象指的是把所有实际问题变成编程问题时的一种策略。 核心思路是: 一切都是对象,这里的对象当做一个专有名词即可。 对象具有方法(Method)和属性(Property/Attribute)两个重要组成部分。
方法指的是可以执行的行为,属性指的是一个对象的特征,比如苹果是红的,苹果的颜色属性就是红色。
举例来说,客户去银行取钱这个问题: 比如客户去银行取钱,客户是个对象,柜员也是对象。 客户的属性有: 姓名, 银行余额, 银行卡号 客户的方法有: 取钱
柜员的属性有: 姓名(柜员的姓名在这个问题里没什么用) 柜员的方法有: 给钱
使用面向对象(OOP)这样一种思想,可以将现实问题抽象对象和他们之间的互动,这有利于程序员写代码。
1.1.2 C++程序的执行 #
这里给了一个例子,将两个输入数字加起来,输出求和的结果。 这个例子你现在可能看不懂。
# include <iostream.h>
void main() {
int a, b, c; // 声明a,b,c三个变量
cout << "请输入2个整数"; // cout,看到out应该理解,它是用来在屏幕上输出文字的
cin >> a >> b; // cin 将输入的两个数字赋值给a和b
c = a + b; // 令c=a+b
cout << a << '+' << b << '=' << c << endl; // 输出 5 + 3 = 8 这种形式的字符
}
接下来这张图讲到C++程序是怎么执行的
你可以把c++程序文件看成记事本,.txt后缀那种。只不过它的后缀是.cpp而已。 第一步就是编辑这个文档,在里面写进你的程序。 第二部叫编译和链接(compile&link)。c++编译器会将你能看懂的c++代码转换成机器能读懂的代码。中间还有一些过程,不过最终输出的是.exe可执行软件。 第三步运行这个exe,检查一下结果对不对,有没有bug。如果有问题就回头修改.cpp文件。这个过程叫debug
1.2 c++程序的组成部分和格式 #
//A C++ Example 这行是注释,// 打头的都是注释,机器执行的时候回自动忽略注释
# include <iostream.h> // 这一行叫预处理指令
void main() // 要执行的代码写在main主函数里,这是固定格式。
{ // 花括号之间的是程序代码
int a, b, c; // 声明变量
cout <<“Please enter 2 integers:”; // 输出提示
cin >> a >> b; // 输入内容
c = a + b; // 运算
cout << a <<‘+’<<b <<‘=’<<c << endl; // 输出结果
}1.3 C++ 程序的一些基本语法 #
- 一行一句 比如 int a = 13;
- 每行以分号结尾,花括号后面没分号,因为它是用来包代码的
- c++是区分大小写的, coin和Coin视作两个变量
- 其他都是屁话
1.4 数据类型 #
分为两大类
- 基本数据类型
- 整数 int 包括short 1字节, int 2字节, long 4字节,long long 8字节 四种
- 单个字符 char 比如 A, 比如5, 比如减号-
- 浮点数 float, double, long double(极少见)区别在于表示范围,看ppt
- 布尔值 boolean 只有true和false
- 高级数据类型
- 结构化数据
- 数列 Array
- 结构类型 Struct
- 联合类型 Union
- 枚举类型 Enum
- 类 Class >> 类也算一种特殊的数据类型
- 指针
- 结构化数据
说一下字节和表达范围的换算 1字节=8位二进制数,所以一字节的表达范围是2的8次方,256, 有符号无符号的符号指的是正负号 有符号的话 256个值被分配到 -128到127这个范围里,C++数据类型默认是有符号的 无符号的话 256个值被分配到 0-255这个范围里,C++在数据类型前加unsigned表示无符号
如果不需要用到负数的话,同样的空间无符号数能存两倍的数据,很好理解。
比如 unsigned int a = 5; 声明一个无符号整数a, 赋值为5
具体的数据类型表达范围看ppt P7
1.5 常量,变量,引用 #
1.5.1 常量 #
一旦赋值就不能修改的量,在数据类型(int、float、double、char、string、bool)前加const表示常量 比如我要算圆周长,需要用到pi
const double pi = 3.1415 // 手动设定一个pi, 方便后续引用1.关于整数的表示法 C++的整数支持十进制,八进制,十六进制
默认是十进制,直接写即可
int a = 10;八进制要在数字前添0以示区别
int a = 07;十六进制在数字前添0x或0X以示区别
int a = 0x5AB注: 八进制和十六进制只能表示有符号数(0和正数) 你可以在数字后面添l或L以示这是个Long类型的整数。如果添ll表示这是Long Long类型 你可以在数字后面添u或U表示这是个无符号数(少见用法)
2.关于浮点数的表示法 看ppt P10吧,有正常表示和科学计数法两种。
3.关于字符的表示法 char类型存储单个字符,具体来说是单个的ASCII编码字符,查一下ASCII编码表。 这个表一共有128个字符,包括英文大小写字母,数字,符号和不可见的字符,比如退格符,回车符。
既然有了表,就意味着有了一一对应的关系,每个ASCII字符与表示它的数字编码一一对应。 比如A在表里对应65 你写 char x = 65; 和 char x = A; 是一个意思。 让这个x加一 x = x + 1;, 那就变成了66 表里对应的是B。
关于特殊符号,比如双引号"吧,C++编辑器并不知道你这个"是指的C++语言里的引号还是单纯的一个符号。所以这种同时出现在ASCII表和C++语法里的符号,需要在前面加反斜杠\来转义避免混淆。 类似的还有单引号’,反斜杠本身\。
PPT P12给了一些特殊符号的例子
4.关于字符串的表示法 String叫字符串,是多个字符串起来的结果,你可以把它理解为一个字符数组或者字符集合。 PPT P13讲的挺好
5.关于布尔值的表示法 布尔值的本质还是整数类型,0是false,其他的是true
你写 boolean x = false; 和 boolean x = 0;是一个意思
6.声明常量 这例子我之前举过圆周率的了,类似的还有自然对数,或者也可以用常量给数组长度设个上限。
1.5.2 定义/声明变量 #
举例子吧 char a, 这个过程叫定义/声明了一个叫a的变量,它的值没有设置,所以是默认值‘’,也就是空字符。
可以批量定义变量,比如
int a,b,c,d,e,f;1.5.3 给变量赋值 #
a = 'A';
变量一定要先声明再赋值, 如果变量只声明而没有赋值,那么它的值是初始值,这个初始值不是固定的而且很奇怪,可能是-858993460
你可以同时声明变量和赋值,这点很常用。 比如
char a = 'A';
int x = 5;1.5.4 引用名称 #
你可以用这个技巧给变量起别名。 这方法不太常见。
1.6 运算符 #
这部分讲的挺好,不过用英文写跟弱智一样 看这个吧, https://www.runoob.com/cplusplus/cpp-operators.html
一些要注意的点
○ /是除法 分为两种,如果除数和被除数是整数,那它代表整数除法,输出值是商, 比如 5 / 3 = 1
如果是浮点数,那就是普通的分数除法。
10.0 / 4.0 = 2.5
○ %是求余数运算
5 % 3 = 2
○ 形如 a = a 运算符 b的可以简化为 a 运算符= b 比如 a += 1 等价于 a = a+1
○ ==和!=是逻辑运算符,它的输出是布尔值
比如 a == a 输出 true,意思是a等于a吗 a != a 输出 false 意思是a不等于a吗
○ 运算符优先级部分可以跳过,如果对优先级不清楚可以无脑用小括号。
○ 自增运算符 有a++和++a两种
a++和++a都等价于 a = a + 1 他们的区别在于: 如果a = 1,那么 b = ++a先执行自增,再赋值给b,b=2 b = a++反过来,先赋值给b,再自增,b=1
○ 其他逻辑运算符 ||或 &&且 !非 这些符号前后接的都是布尔值,或者结果等于布尔值的算式
○ sizeof函数
用来求某个变量类型占的空间 比如你不知道double占几个字节,用这个就对了,参考PPT P38即可
double x(3.5);
a=sizeof(x); //8
b=sizeof(double)○ 强制转换类型
比如你有a=2.5这个float浮点数,你要把它强转为整数 int b = (int)a,
大范围的数据类型转为小范围的数据类型
float转int是截取整数部分 double转float是四舍五入
1.7 标准输入输出 #
用这个功能之前确保你的程序在main这一行前面有以下两行
#include <iostream>
using namespace std;核心是 cin 和 cout 这两个函数
cout用于在控制台输出文字,格式如下
cout << "你好";
cout << "目前的气温是" << temperature;注意<<的方向,用多个<<可拼接字符串。
cin 用于用户向程序输入数据
int a,b;
cin >> a >> b;程序执行到cin这一行会停滞。 需要在控制台里敲入 数字空格数字,然后按回车。之后程序继续运行。 这里的两行代码的意思是,声明a,b两个变量 将用户输入的两个值赋值给a,b。