目录
基本概念
语句
给计算机一个命令的,分号结尾或引领一个域的一行。
块
多条或单条语句构成的语句群,常见的块有:域、switch语句分支。
域
以大括号包围的一个块,常见的域(从大到小)包括:命名空间、类、函数、循环体、判断体,亦可将任意语句用大括号包装成块。域的特点是限制了其中变量的作用范围(亦称生命周期),即一般在域外无法访问域内声明的变量。
注释
以双斜杠(//)引起的单行或以/**/包围的一行或多行,不是语句,计算机不会执行其中的命令。
语句
基本语句
声明语句
以分号结尾的,向编译器申请新的空间以保存变量的语句,结构为:
变量类型 变量名;
赋值语句
以分号结尾的,结构为:
变量名 = 新值;
调用语句
以分号结尾的一个函数的名字加括号,结构为:
函数名(参数列表);
复合基本语句
声明赋值语句
结构为:
变量类型 变量名 = 初始值;
赋值调用语句
结构为:
变量名 = 函数名(参数列表);
声明赋值调用语句
结构为:
变量类型 变量名 = 函数名(参数列表);
条件语句
if-else语句
以if(判断条件)、else if(判断条件)或else引起的,后接一个域的语句(当该域仅含一条语句,大括号可省去)。当判断条件成立时,执行域,否则,优先执行else部分。且若有嵌套的省去大括号的if语句,其后的else语句会在最近的if语句条件为假时执行。这三类判断语句的出现顺序必须同前文中提到他们的先后顺序相符。
结构为:
if(条件命题1)
单条语句或域
else if(条件命题2)
单条语句或域
else
单条语句或域
switch语句
结构为:
switch(条件变量名){
case 条件值:
语句块
break;
default:
break;
}
循环(迭代)语句
以for(){}、while(){}、do{}while()引起的,大括号中为循环体(当该域仅含一条语句,大括号可省去)。这三类语句起到的功能近似,都是在圆括号内条件成立时,重复执行循环体。
for语句
例:
for(int i=0;i<10;++i)
单条语句或域
while语句
例:
while(循环命题)
单条语句或域
do-while语句
do-while语句在判断圆括号内条件前会先执行一次循环体,并且其while的圆括号后应加分号。
例:
do
单条语句或域
while(循环命题);
函数、类、模版类
函数
一个具有返回值类型、名字、参数,用于完成一个目的或返回一个值的域。其中,主函数特指名字为main的函数,一个程序中仅能有一个主函数,并且系统执行程序时会自动调用主函数。
例1:
void print(char* sentence){
cout<<sentence<<endl;
}
例2:
int add(int addend, int summand){
int sum = addend + summand;
return sum;
}
类
以class 类名引起的一个域,其中包含该类的一些函数与变量。
例:
class human{
public:
int x;
int y;
void walk(int x_, int y_){
x += x_;
y += y_;
}
protected:
private:
}
模版类
待更新
基本数据类型
修饰符
符名 | 作用 |
unsigned | 被修饰变量非负 |
const | 被修饰变量值不可变更 |
整数类型族
类型名 | 字节数 |
short | 2 |
int | 2或4 |
long | 4或8 |
long long | 8 |
浮点数类型族
类型名 | 指数位 | 精度位 |
float | 8 | 23 |
double | 11 | 52 |
字符类型族
待更新
运算符
大类优先级
注意:本文并不列出具体运算符优先级,建议了解大类优先级后自行进一步了解,并避免使用包含不确定优先级的语句。
运算符类别 | 优先级 |
访问控制运算符 | top,0 |
括号类运算符 | 1 |
自增/减、类型转换、位运算、内存运算符、noexcept | 2 |
算术运算符,移位运算符 | 3 |
逻辑运算符、其他位运算符、条件运算符 | 4 |
赋值类运算符 | 5 |
逗号运算符、throw | bottom,6 |
算术运算符
符号 | 作用 |
+ | 表示正数 |
- | 表示负数 |
+ | 返回前后变量之和 |
- | 返回前后变量之差 |
* | 返回前后变量之积 |
/ | 返回前后变量之商 |
% | 返回前变量除以后变量的余数 |
逻辑运算符
符号 | 作用 |
! | 逻辑非 |
&& | 逻辑与 |
|| | 逻辑或 |
> | 返回命题“左变量大于右变量”的真假 |
>= | 返回命题“左变量大于等于右变量”的真假 |
< | 返回命题“左变量小于右变量”的真假 |
<= | 返回命题“左变量小于等于右变量”的真假 |
== | 返回命题“左变量等于右变量”的真假 |
!= | 返回命题“左变量不等于右变量”的真假 |
自增自减运算符
符号 | 作用 |
++i | 变量i增大1,返回增大后的i |
i++ | 变量i增大1,返回增大前的i |
--i | 变量i减小1,返回减小后的i |
i-- | 变量i减小1,返回减小前的i |
访问控制运算符
符号 | 用法 | 作用 |
. | item.var | 指定对象item的变量var |
-> | pointer->var | 指定指针pointer指向的变量var |
:: | namespace::item | 指定某个可访问域的对象item |
内存运算符
符号 | 作用 |
sizeof | 给出类型所占内存字节数 |
new、new[] | 创建堆对象或堆对象数组 |
delete、delete[] | 释放堆对象或堆对象数组 |
* | 解引用 |
& | 取地址 |
位运算符
符号 | 含义 | 左值 | 右值 | 结果 |
~ | 取反 | 无 | 1 | 0 |
& | 与 | 1010 | 1101 | 1000 |
| | 或 | 1010 | 1101 | 1111 |
^ | 异或 | 1010 | 1101 | 0111 |
>> | 右移 | 1001 0101 | 3 | 0001 0010 |
<< | 左移 | 1001 0101 | 3 | 1010 1000 |
赋值类运算符
=
将右值赋给左变量
混合赋值运算符
=可和五种算术运算符和五种位运算符混合使用(仅取反运算符~不能与=一起使用)。
其他运算符
运算符 | 名称 | 示例 |
? | 条件运算符 | 表达式?值1:值2 |
, | 逗号运算符 | 值或表达式1,值或表达式2 |
noexcept | 无异常运算符 | noexcept(expr); |
throw | 抛出异常 | throw exception; |