变量
1、最好在使用变量前定义和初始化变量,不要全部定义在文件首部。
2、全局变量会自动初始化为0,局部变量需要手动初始化。
3、使用变量时,程序会在使用点所在的局部范围内查找相应变量,如果不存在,则会查找全局变量。使用全局变量可能会引起bug和调试困难。
4、浮点型,float 、double、 long double
5、初始化变量时,最好使用{}方式,该方式定义的变量出现数据类型容量冲突时,编译器会警告,而采用 = 方式,编译器不会警告,而会出现一些难以预测的后果。
6、sizeof 函数不仅可用于数据类型,也可用于变量。
常量
1、尽量不使用#define来定义常量,使用const 最好,如const double num。
2、常量一经定义,不得被程序更改。
数组
1、数组中元素得数据类型需要一致。
2、数据的大小在程序运行时不可改变。
3、定义方式:array_datatype array_name [容量] {初始化内容},其余细节和c差不多,知道定义和初始化方式即可。
3、数组名在作为变量输出时,输出数组首元素的地址。
4、多维数组定义及初始化。
向量
创建向量相当于创建一个对象,需要包含<vector>,同时属于标准库,不想重复使用范围解析运算符就要使用命名空间 using namespace std;
1、向量的定义与初始化。向量的大小可以在定义后改变,vector <int> num(5)定义则初始化为5个0,vector <int> num不指定空间大小则会是空向量(不是全0!),下面第三方式定义了初始空间为365的vector,每个元素为80.0
2、特性
3、对vector访问时,用[]方式则不会进行边界检查,超出索引范围将会引起意想不到的输出,建议使用.at()方法。
4、在其后添加元素使用.push_back()方法,更改已有元素用类似test_scores.at(2) = 400的方式赋值。
5、二维向量定义方式和二维数组类似。
PEMDAS
1、运算符优先级:圆括号 、指数、乘法(除法)、加法(减法)
数据类型转换
1、使用static_cast<type>语句
混合赋值运算符
for loop
1、for loop 的comma操作符可以初始化多个变量。for下面的语句,没有{}时,只会执行最近一行代码的操作,为了方便维护和提高可读性,尽量使用{}。
2、range based for loop 可以对数组、字符串、向量直接循环
#include <iostream>
#include <vector>
using namespace std;
int main(){
// int scores[] {1,2,3,4,5};
//
// for(auto score : scores)
// cout << score << endl;
for(auto c : "string")
cout << c << endl;
return 0;
}
do while loop
do while loop中用于条件检查的变量不可在循环体内部定义,否则编译器会报错
continue break 语句
可用于c++中所有循环结构中,但不要过多使用,会使循环变得很复杂。
分支
1、if语句,if块内可定义变量,但只能用于定义的块区域内。
2、switch case语句