在B站看到C++课程于是尝试学习一下并记录以便巩固。
本文章大部分内容为学习课程的笔记,少部分为经过亲自实践/询问他人获得的额外经验。


记录跳转

第一部分:C++学习记录 Part.1
第二部分:C++学习记录 Part.2


资源

【配套编程环境搭建】
https://www.bilibili.com/video/av44145245/?spm_id_from=333.788.b_765f64657363.1

【配套讲义】
基础篇:https://blog.csdn.net/ClaireSy/article/details/108422945
核心篇:https://blog.csdn.net/ClaireSy/article/details/108423047
提高篇:https://blog.csdn.net/ClaireSy/article/details/108423061
【课程学习】
https://www.bilibili.com/video/BV1et411b73Z


Hello World

1.基本的10行代码

#include<iostream>
using namespace std;

int main()
{

system("pause");

return 0;
  }

2.Hello World的输出

cout<<"Hello World";

双引号中的字符串是可以任意修改的,写了什么就直接输出什么。

3.在2的基础上换行符endl的使用

cout<<"Hello World"<<endl;

注释

1.作用

在代码中加一些说明和解释,方便自己或其他程序员阅读代码。

2.语法

①.单行注释

//我是单行注释,编辑器不会处理我

即对该行代码说明。
通常放在一行代码上方,或者一条语句末尾。

②.多行注释

/*
我是
多行注释,
编辑器
也不会
处理
我
*/

即对该段代码做整体说明。
通常放在一段代码的上方。

【注:注释格式后/内字体颜色为绿色。】

3.暂且小提一下main函数

main是一个程序的入口,
每个程序都必须有这么一个函数,
有且仅有一个。


变量

1.作用

给一段指定的内存空间(C++中所有数据都会放到内存中)起名,方便操作管理这段内存空间。

2.语法

数据类型 变量名 = 初始值;

3.实践

①.尝试创建初始值为0的整型变量a并输出“a=0”

int a = 0;
cout<<"a="<<a;

常量

1.作用

用于记录程序中不可更改的数据(修改则改变原有意义,如一周有7天)。

2.语法

①.#define宏常量:

#define 常量名 常量值;

通常在文件上方(即main函数上方)定义,
表示一个常量。

②.const修饰的变量:

const 数据类型 常量名 = 常量值;

通常在变量定义前加关键词const,
修饰该变量为常量,不可修改。

【注:①中无赋值符号,②中有赋值符号。】

3.实践

①.尝试用2中①和②分别创建常量7和12,并分行输出“一周有7天”“一年有12月”

#define Day 7;

const int Month = 12;
cout<<"一周有"<<Day<<"天"<<endl;
cout<<"一年有"<<Month<<"月";

标识符与关键字

1.定义

①.标识符是开发人员在程序中自定义的一些符号和名称,是自己定义的,如变量名 、函数名等。
②.关键字是C++中预先保留的标识符。

【注:关键字是特殊的标识符。】
【注:不允许开发者自己定义和关键字相同的名字的标识符(如变量、常量等),否则会产生歧义。】

2.标识符命名规则

①.标识符不能是关键字。
②.标识符只能由字母、数字、下划线组成。
③.标识符的首位字符必须是字母或下划线。
④.标识符中字母区分大小写。

【注:2019版本VS可用汉字命名标识符。】
【注:命名建议做到见名知义】


数据类型

1.作用

给变量分配合适的内存空间。

2.整型

作用

表示整数类型的数据。

类型

数据类型 占用空间
short(短整型) 2字节
int(整型) 4字节
long(长整型) Windows4字节,Linux4字节(32位)或8字节(64位)
long long(长长整型) 8字节

注意

①.赋值若超出上限将输出下限,如短整型short的赋值范围为-32768~32767,如果

short x = 32768;

则输出的x值为-32768。
②.无特殊情况,最常用int。
③.整型大小比较:
short<int<=long<=long long

3.sizeof关键字

作用

统计数据类型所占内存大小。

语法

sizeof(数据类型或变量)

4.实型(浮点型)

作用

表示小数。

类别

数据类型 占用空间 有效数字范围
float(单精度) 4字节 7位有效数字
double(双精度) 8字节 15~16位有效数字

注意

①.默认情况下编译器会把小数识别为双精度,因此使用单精度变量时一般在赋值的小数末尾加f,如

float pi = 3.14f; 

②.不管是单精度还是双精度,在输出小数时都会默认显示出6位有效数字,如需查看更多位数需要额外配置。
③.科学计数法:
1e2 表示 1乘10的平方
1e-2 表示 1乘0.1的平方

5.字符型

作用

表示单个字符。

语法

char 变量名 = '字符';

注意

①.显示字符型变量时,要用单引号将赋值的字符括起来,不是双引号。
②.①中单引号内只能由一个字符,不可以时字符串。
③.C和C++中字符型变量只占用1个字符。
④.字符型变量并不是把字符本身放到内存中存储,而是将对应的ASCII码值放入到存储单元。
⑤.查看字符型变量ch对应的ASCII码值的方法:

char ch = 'a';
cout << (int)ch;

这样输出的结果为:97。
⑥.关于ASCII编码:
src=http _img2020.cnblogs.com_blog_24244_202006_24244202006020933455781045227391.pngrefer=http _img2020.cnblogs.comapp=2002size=f9999,10000q=a80n=0g=0nfmt=jpeg.jpg
ASCII表上的码值0~31分配给了控制字符(显如提示音、换行、回车等),用于控制像打印机等一些外围设备。
ASCII表上的码值32~126分配给了键盘上找到的字符,当查看或打印文档时就会出现。
顺便一提重点记住ASCII码值:48表示数字0,97表示字母a,65表示字母A,按顺序可以依次推导。

6.转义字符

作用

表示一些不能显示出来的ASCII字符。

类型

src=http _img.mukewang.com_59828dda000118ea05700675.pngrefer=http _img.mukewang.comapp=2002size=f9999,10000q=a80n=0g=0nfmt=jpeg.jpg

实践

①.尝试输出任意内容并使用转义字符“\n”换行?

cout<<"Shakuameji\n";

②.尝试输出“\”?

cout << "\\";

【注:第一个“\”是要告诉编译器咱要输出一个特殊的符号,因此两个反斜杠才能输出“\”】

③.尝试结合①输出三行,分别为“1喵”、“12喵”、“123喵”,并利用水平制表符(\t)使三行的喵左侧对齐。

cout << "1\t喵\n";
cout << "12\t喵\n";
cout << "123\t喵\n";

【注:灵活运用制表符可以起到整齐输出数据的作用。】
【注:其实水平制表符相当于:与该行“\t”前的字符一同占用8个字符的位置。因此即使每行“\t”左侧字符杂乱,右侧的字符也将左侧对齐。】
【注:若突然有一行的“\t”左侧的字符数已经大于7个,则会与多出前7位的字符重新一同占用8个字符的位置。当然此行“\t”右侧的字符将不会与上一行保持左侧对齐。】

7.字符串型

作用

表示一串字符。

语法

①.C语言字符串:

char 变量名[] = "字符串值";

②.C++字符串:

string 变量名 = "字符串值";

【注:两者相较字符型变量的语法都将赋值外的改为双引号。】
【注:C语言的字符串型变量语法额外需在变量名后加一个中括号。】
【注:使用C++字符串型变量时,需加入头文件 #include<string> 。】
【注:虽然输出时在双引号中书写内容也可以直接输出,但对于要重复输出的内容可以用字符串型变量。】

8.布尔(bool)类型

作用

代表真或假的类型。

注意

①.布尔数据类型变量的值只有ture、false和任意数字。

ture false 非0数字 0
输出是1 输出是0 输出是1 输出是0

②.布尔数据类型所占1个字节大小,因为它本质上是1或0。

数据的输入

1.作用

从键盘获取数据

2.语法

cin >> 变量名;

【注:cin输入的值只取整型,即使你输入0.1,实际上输入的值只取到0。】

3.实践

①.尝试创建一个初始值为hello的字符串型变量str,让屏幕前的人给变量str重新赋值,重新输出变量str的值?

char str[] = "hello";
cout << "请为变量str重新赋值\n";
cin >> str;
cout << str << "\n";

【注:①中最后一行运用换行符时不可以直接加在变量名后,而是要加在双引号中。】


运算符

1.作用

执行代码的运算

2.类别

运算符类型 作用
算术运算符 处理四则运算
赋值运算符 将表达式的值赋给变量
比较运算符 表达式的比较,并返回一个真值或假值
逻辑运算符 根据表达式的值返回真值或假值

3.算术运算符

作用

处理四则运算

类别

运算符 术语
+ 正号
- 负号
+
-
*
/
运算符 术语 示例 结果
% 取模(取余) 10%3 1
++ 前置递增 a=2;b=++a; a=3;b=3;
++ 后置递增 a=2;b=a++; a=3;b=2;
前置递减 a=2;b=–a; a=1;b=1;
后置递减 a=2;b=a–; a=1;b=2;

注意

【除法运算符】
①.当创建的变量均为整型int时,两个整数做相除运算,结果也必须为整数。所以当运算结果有小数时将把小数部分舍去。注意是小数部分直接舍去,并非四舍五入。
②.当然,你也不允许把除数位置的数值设置为0。
③.当创建的变量均为实型(浮点型)float/double时,两个小数可以相除。并且结果可以为整数,也可以为小数。
【取模运算符】
④.其实就是运用于无法整除的情况求余数。
⑤.该运算符只运用在除法运算中,因此该运算符后面的位置即除数的位置也不能是0。
⑥.该运算符前后都不允许是小数。只有整型变量可以进行取模运算。
【递增/递减运算符】
⑦.顾名思义,递增/递减就是+1/-1。
⑧.前置递增与后置递增的区别:
前置递增先让变量+1,然后进行赋值或其他表达式运算。
后置递增先进行赋值或表达式的运算,然后变量+1。

前置递减与后置递减的区别原理相同。

3.赋值运算符

作用

将表达式的值赋给变量。

类别

运算符 术语 示例 结果
= 赋值 a=2;b=3; a=2;b=3;
+= 加等于 a=0; a+=2; a=2;
-= 减等于 a=5; a-=3; a=2;
*= 乘等于 a=2; a*=2; a=4;
/= 除等于 a=4; a/=2; a=2;
%= 模等于 a=3; a%2; a=1;

注意

①.举个便于理解の栗子:a+=2相当于a(现在)=a(原来)+2,相当于对a重新赋值。

4.比较运算符

作用

表达式的比较,并返回一个真值或假值。

类别

运算符 术语 示例 结果
== 相等于 3==4 0
!= 不等于 3!=4 1
< 小于 4<3 0
> 大于 4>3 1
<= 小于等于 4<=3 0
>= 大于等于 4>=3 1

注意

①.优先级:对想要先执行的运算符包含的表达式两端加上小括号。最常见的如cout << ( a == b ) << endl;,换行符前的<<优先级高于==,因此需要在比较运算式两端加括号。
②.优先级顺序表:
图片.png

5.逻辑运算符

作用

根据表达式的值返回真值或假值。

类别

运算符术语示例结果
!!a如果a为真,则!a为假;如果a为假,则!a为真
&&a&&b仅当a和b都为真时,结果为真,其余都为假
||a||b仅当a和b都为假时,结果为假;其余都为真

注意

①.口诀:
非——“真变假,假变真”
与——“同真为真,其余为假”
或——“同假为假,其余为真”
②.在c++中赋的值除了0,都为真。
例如:

int a = 10 ;
cout << !a << endl;
cout << !!a << endl;

逻辑运算符用于根据表达式的值返回真值或假值。因此第一次输出结果为0,第二次输出结果为1。


下一部分:
C++学习记录 Part.2