第一节:环境搭建
1.1安装c++编译器和IDE
Windows
MinGW:轻量级的编译器,简单易用。
Visual Studio:功能强大的 IDE,适合 Windows 开发。
Linux
使用命令:sudo apt-get install g++ 或 sudo yum install gcc-c++
Mac
使用 Homebrew:brew install gcc
1.2 编译与运行实例程序
#include <iostream>
using namespace std;
int main()
{
cout << " Hello World" << endl;
return 0;
}
对上述代码做一些讲解
第一行:#include
这一行用来包含头文件,#include就是包含头文件,用<>括起来的就是表示能在系统中找到的,就是C++自带的头文件,自己创建的头文件要用""括起来。是C++控制台输入输出的标准流。Dev C++编程的时候还可以用万能头<bits/stdc++.h>
第二行:using namespace std;是声明命名空间,std就是standard,基础,默认的意思,cout就是在std中声明的。using 和 namespace一般一起出现。
这里还涉及到一个重要语法:每行代码最后都要有;或{}除了#开头的预处理指令。
第三行:int main(){声明main函数,最后的{和最后一行的}成对出现,代表main函数的代码块范围,也就是括起来的代码都是main函数里的。前面的int代表main函数的返回值是int类型。main函数是C++唯一的程序入口,有main函数的文件可以被编译运行。C++运行时就是执行main函数里的代码。
第四行:cout << “Hello World!”;往控制台输出Hello World这串字符。cout就是console+out,就是往控制台输出,与之对应的还有cin(console+in)从控制台获取输入。<<是输出符,代表输出<<后面的变量或字符串。
第五行:return 0;,return语句是返回值,是函数结束的语句,执行到这里时不论后面有没有代码,函数都会结束运行。0是返回的值,int是数字类型,所以返回了数字。这行可以省略,但是只有main函数的return可以省略。
第六行:}跟第三行的{成对出现,作用在第三行讲了
在终端中,执行编译
g++ hello.cpp -o hello
./hello
第二节
2.1 代码注释
// 这是单行注释
/* 这是多行注释
可以跨越多行 */
2.2 基本数据类型
类型 | 关键字 |
---|---|
整型 | int |
浮点型 | float |
双浮点型 | double |
字符型 | char |
布尔型 | bool |
无类型 | void |
宽字符型 | wchar_t |
2.3 修饰符
修饰符 | 位 | 范围 |
---|---|---|
char | 1字节 | -128 — 127 或者 0 — 255 |
unsigned char | 1字节 | 0 — 255 |
signed char | 1字节 | -128 — 127 |
int | 4字节 | -2147483648 — 2147483647 |
unsigned int | 4字节 | 0 — 4294967295 |
signed int | 4字节 | -2147483648 — 2147483647 |
short int | 2字节 | -32768 — 32767 |
unsigned short int | 2字节 | 0 — 65535 |
signed short int | 2字节 | -32768 — 32767 |
long int | 8字节 | -9,223,372,036,854,775,808 — 9,223,372,036,854,775,807 |
signed long int | 8字节 | -9,223,372,036,854,775,808 — 9,223,372,036,854,775,807 |
unsigned long int | 8字节 | 0 — 18,446,744,073,709,551,615 |
float | 4字节 | 精度型占4个字节(32位)内存空间,+/- 3.4e +/- 38 (~7 个数字) |
double | 8字节 | 双精度型占8 个字节(64位)内存空间,+/- 1.7e +/- 308 (~15 个数字) |
long long | 8字节 | 双精度型占8 个字节(64位)内存空间,表示 -9,223,372,036,854,775,807 到 9,223,372,036,854,775,807 的范围 |
long double | 16字节 | 长双精度型 16 个字节(128位)内存空间,可提供18-19位有效数字 |
2.4 sizeof关键字
作用:利用sizeof关键字可以统计数据类型所占的内存大小
int a = 10;
auto b = sizof(a);
2.5算数运算
运算符 | 描述 | 实例 |
---|---|---|
+ | 两个数字相加 | a + b |
- | 两个数字相减 | a - b |
* | 两个数字相乘 | a * b |
/ | 两个数字相除 | a / b |
% | 取模运算,整除后取余数 | a % b |
++ | 自增运算,整数增加1 | a++ |
– | 自减运算,整数减少1 | a– |
2.6 关系运算符
运算符 | 描述 | 实例 |
---|---|---|
== | 判断两个操作的值是否相等,若相等条件为真 | (a==b) |
!= | 判断两个操作的值是否不相等,若不相等条件为真 | (a != b) |
> | 判断左边的操作值是否大于右边的操作值,若大于为真 | (a > b) |
< | 判断左边的操作值是否小于右边的操作值,若小于为真 | (a < b) |
>= | 判断左边的操作值是否大于等于右边的操作值,若大于等于为真 | (a >= b) |
<= | 判断左边的操作值是否小于等于右边的操作值,若小于等于为真 | (a <= b) |
2.7 逻辑运算符
运算符 | 描述 | 实例 |
---|---|---|
&& | 称为逻辑与运算符。两个操作都为true,则条件为true | (A && B) |
ll | 逻辑或运算。两个操作,只要其中一个true,则条件为true | (A ll B) |
! | 称为逻辑非运算。如果条件为true,非运算符,转化为false | !(A && B) |
2.8 位运算
运算符 | 描述 | 实例 |
---|---|---|
& | 按位与操作,按二进制位进行"与"运算 | (A & B) |
l | 按位或运算符,按二进制位进行"或"运算 | |
^ | 异或运算符,按二进制位进行"异或"运算 | (A ^ B) |
~ | 取反运算符,按二进制位进行"取反"运算 | (~ A) |
<< | 二进制左移运算符。将一个运算对象的各二进制位全部左移若干位(左边的二进制位丢弃,右边补0) | A << 2 |
>> | 进制右移运算符。将一个数的各二进制位全部右移若干位,正数左补0,负数左补1,右边丢弃 | A >> 2 |
第三节
分支语句
3.1 if - else
if(条件1)
{
执行语句1
}
else
{
执行语句2
}
3.2 if-else if - else
if(条件1)
{
执行语句1
}
else if(条件2)
{
执行语句2
}
else
{
执行语句3
}
3.3 switch语句
switch(一个变量)
{
case 条件1:执行语句1;break;//加break是为了执行完这一种情况后不会再执行下面的语句
case 条件2:执行语句2;break;
case 条件3:执行语句3;break;
default:执行语句4; //如果上面条件都不满足,就执行语句4
}
循环语句
3.4. for
for(设置变量;循环条件;每次循环后执行语句2)
{
执行语句1;
}
for(int i = 0; i < 5; i++)
{
cout << i << endl;
}
3.5. while
while(条件)//如果满足条件,则执行,如果不满足,则退出循环
{
执行语句;
}
int i = 1;
while(i <= 5)
{
cout << i << endl;
i++;
}
3.6 do-while
do{
//先执行语句
执行语句;
}while(循环条件);//如果满足条件,继续执行
int i = 1;
do {
cout << i << endl;
i++;
}
while(i <= 5);
}
3.7. continue
让continue后面的代码不执行,直接执行下次循环
3.8 break
结束本次循环
第四节
4.1 一位数组
数据类型 数组名称[数组大小] = {
数据,数据...};
int a[10] = {
0}; 将所有的元素初始化为0
当数组有一个元素被赋值之后,C++会把剩余元素自动赋值为0。
数组的特点,放在一块连续的内存空间,数组中每个元素的都是相同的数据类型
int a[5]; 声明一个数组,大小有5个
a[0] = 10;
a[1] = 20;
a[2] = 30;
a[3] = 40;
a[4] = 50;
给数组每一个元素赋值
可以使用for循环获取数组的值
for(int i=0; i < 5; i++)
{
cout << i << endl;
}
也可以使用sizeof来获取循环次数
int echo_num = sizeof(a) / sizeof(a[0])
for (auto i = 0; i < echo_num; i++)
{
cout << i << endl;
}
//若初始化没有五个数据,剩下的将会由0填补
int arr1[5] = {
10, 20, 30};
4.2 二位数组
数据类型 数组名[行数] [列数];
数据类型 数组名[行数] [列数]={
{
数据1,数据2},{
数据3,数据4}};
数据类型 数组名[行数] [列数]={
数据1,数据2,数据3,数据4};
数据类型 数组名[ ] [列数]={
数据1,数据2,数据3,数据4};
//1、数据类型 数组名[行数] [列数];
int arr[2][3] = {
{
1, 2, 3}, {
4, 5, 6}};
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 3; j++)
{
cout << arr[i][j] <&l