27.C++入门语法知识总结
发布时间 :
字数:2.4k
阅读 :
27.总结
27.1 知识点

学习的主要内容

总结讲什么

为什么要讲练结合

如何培养良好的学习习惯

如何快速的提升编程能力

27.2 核心要点速览
注释
- 单行注释:
// 注释内容
,用于单行代码注释。
- 多行注释:
/* 注释内容 */
,用于多行代码注释。
程序基础结构
- 预处理指令:
#include <iostream>
引用系统库,#include "文件路径"
引用自定义文件。
- 命名空间:
using namespace std;
避免重复写std::
前缀。
- 主函数:
int main()
是程序入口,return 0
可省略。
输入输出语句
- 输出:
cout << "内容" << endl;
(endl
换行)或cout << "内容\n";
(\n
换行)。
- 输入:
cin >> 变量;
读取用户输入,以回车结束。
折叠代码
#pragma region 分组名
#pragma endregion
变量
声明规则
- 格式:
类型 变量名 = 初始值;
,如int i = 1;
。
- 必须先声明后使用,初始值类型需与变量类型一致。
有符号整型变量
类型(别名) |
字节数 |
存储范围 |
示例 |
short (signed short , signed short int , short int ) |
2 |
-32768 ~ 32767 |
short s = 1; signed short int s3 = 3; |
int (signed , signed int ) |
4 |
-21亿 ~ 21亿 |
int i = -10; signed int i2 = 2000000000; |
long (signed long , signed long int , long int ) |
4/8 |
-21亿 ~ 21亿(32位)或 -9223亿亿 ~ 9223亿亿(64位) |
long l = 10; signed long int l3 = 13L; |
long long (signed long long , signed long long int , long long int ) |
8 |
-9223亿亿 ~ 9223亿亿 |
long long ll = 2e11; signed long long ll2 = 2ll; |
无符号整型变量
类型(别名) |
字节数 |
存储范围 |
示例 |
unsigned short (unsigned short int ) |
2 |
0 ~ 65535 |
unsigned short us = 50; |
unsigned (unsigned int ) |
4 |
0 ~ 42亿 |
unsigned u = 4200000000; unsigned int u2 = 2U; |
unsigned long (unsigned long int ) |
4/8 |
0 ~ 42亿(32位)或 0 ~ 18446亿亿(64位) |
unsigned long ul = 4200000000; unsigned long int ul3 = 30UL; |
unsigned long long (unsigned long long int ) |
8 |
0 ~ 18446亿亿 |
unsigned long long ull = 1e13; unsigned long long ull3 = 3ULL; |
浮点数变量
类型 |
字节数 |
存储范围 |
有效数字 |
示例 |
float |
4 |
-3.4×10⁻³⁸ ~ 3.4×10³⁸ |
6-7位 |
float f = 1.4F; |
double |
8 |
-1.7×10⁻³⁰⁸ ~ 1.7×10³⁰⁸ |
15-16位 |
double d = 1.5; |
long double |
8/12/16 |
-1.1×10⁻⁴⁹³² ~ 1.1×10⁴⁹³² |
18-21位 |
long double ld = 1.6l; |
特殊类型
类型 |
字节数 |
说明 |
示例 |
bool |
1 |
布尔值(true /false ) |
bool b = true; |
char |
1 |
单个字符(ASCII编码) |
char c = 'a'; |
string |
- |
动态字符串(sizeof 约40字节) |
string str = "hello"; |
变量的本质
内存空间
- 单位换算:1 byte = 8 bit,1 KB = 1024 byte。
- 常用类型字节数:
int
4 byte,long long
8 byte,float
4 byte,char
1 byte,bool
1 byte。
- 获取方法:
sizeof(类型)
,如cout << sizeof(int);
输出4。
二进制本质
- 计算机以二进制(0/1)存储数据,电信号“开/关”对应1/0。
- 二进制转十进制:按位权展开,如
101B = 1×2²+0×2¹+1×2⁰=5
。
8进制和16进制
进制转换
- 8进制→10进制:每一位×8的幂次相加,如
077O = 7×8¹+7×8⁰=63
。
- 16进制→10进制:每一位×16的幂次相加,如
0x3C7H = 3×16²+12×16¹+7×16⁰=967
。
- 10进制→8/16进制:除以基数取余,倒序排列。
声明方式
- 8进制:以
0
开头,如int i8 = 077;
。
- 16进制:以
0x
开头,如int i16 = 0x3C7;
。
- 2进制(C++11):以
0b
开头,如int i2 = 0B101;
。
反码和补码
原码、反码、补码
数值 |
原码(16位) |
反码 |
补码 |
5 |
0000 0000 0000 0101 |
同原码 |
同原码 |
-5 |
1000 0000 0000 0101 |
1111 1111 1111 1010 |
1111 1111 1111 1011 |
补码作用
- 解决原码中
+0
和-0
的二义性,仅0000...0000
表示0。
- 统一加减法运算,负数加法可转化为补码加法(如
5 + (-5) = 0
)。
变量命名规范
必须遵守的规则
- 不能重名、以数字开头、使用关键字(如
int
、if
)、包含特殊符号(除_
外)。
命名法
- 驼峰法:
myName
(变量/函数)。
- 帕斯卡法:
MyName
(类名)。
- 下划线法:
my_name
(C++常用)。
- 匈牙利法:
nAge
(n
表示int类型)。
常量
const 常量
- 声明:
const 类型 名称 = 初始值;
,如const double PI = 3.14159;
。
- 特性:声明时必须初始化,值不可修改,用于存储不变量(如圆周率)。
转义字符
定义与作用
- 用于表示字符串中的特殊字符(如双引号、换行符等),通过
\
作为前缀实现转义。
常用转义字符
符号 |
含义 |
示例代码 |
输出结果 |
\" |
双引号 |
string s = "a\"b"; |
a"b |
\n |
换行符 |
cout << "line1\nline2"; |
line1 line2 |
\\ |
反斜杠(文件路径) |
string path = "C:\\file.txt"; |
C:\file.txt |
\t |
制表符(Tab) |
cout << "Name\tAge"; |
Name Age |
\0 |
空字符(字符串结束) |
string empty = "\0"; |
空字符串 |
特殊用法:取消转义
运算符
类型 |
运算符 |
说明 |
优先级(从高到低) |
算术运算符 |
+ - * / % |
加减乘除、取余运算,整数除法截尾(如5/2=2 ),取余示例7%3=1 。 |
* / % > + - |
复合赋值 |
+= -= *= /= %= |
算术运算与赋值结合(如a += 2 等价于a = a + 2 )。 |
低于算术运算符 |
自增减 |
++ -- |
前置++a 先增后用,后置a++ 先用后增(如int a=1; cout<<++a; 输出2)。 |
高于算术运算符 |
关系运算符 |
> < >= <= == != |
比较结果为bool 类型(如3>2 返回true ,"a"!="b" 返回true )。 |
高于逻辑运算符(除! 外) |
逻辑运算符 |
! && || |
逻辑非、与、或,具有短路特性(&& 左假右不执行,|| 左真右不执行)。 |
! > && > || |
位运算符 |
& | ^ ~ << >> |
位与、或、异或、取反、左移、右移(如5<<1=10 ,5&3=1 ,~5=-6 )。 |
高于逻辑运算符(仅! 例外) |
三目运算符 |
条件 ? 表达式1 : 表达式2 |
条件为真返回表达式1,否则返回表达式2(如a>b?a:b ),可作为左值。 |
低于赋值运算符 |
字符串拼接
类型 |
方法/语法 |
说明 |
示例 |
运算符拼接 |
+ / += |
直接拼接字符串,支持char 类型(如'c' ),不支持数值类型(需转换)。 |
string str = "Hello" + "World"; str += "!"; → "HelloWorld!" |
方法拼接 |
append() |
字符串对象方法,功能同+= ,更清晰表达拼接意图。 |
string str = "a"; str.append("bc"); → "abc" |
类型转换
隐式转换规则
遵循小范围→大范围自动转换原则:
long double → double → float → long long → long → int → short → char
- 安全转换:低精度转高精度(如
char→int
)无数据丢失。
- 危险转换:高精度转低精度(如
int→char
)可能溢出,无符号与有符号混用可能导致意外值(如int=-1→unsigned=4294967295
)。
- 特殊情况:
string
与其他类型无隐式转换,整数除法需显式用浮点数(如3/2.0
得1.5)。
显式转换
方法/语法 |
说明 |
示例 |
注意事项 |
(目标类型)表达式 |
括号强转,强制截断或提升类型。 |
int i = (int)4.5; (i=4) |
可能丢失精度或溢出(如int→char )。 |
to_string(值) |
将数值转字符串(需#include <string> )。 |
string s = to_string(10); |
char 转字符串输出ASCII码(如'A'→"65" )。 |
stoi(s)/stol(s)/stoul(s) |
将字符串转int/long/unsigned long (需#include <string> )。 |
int i = stoi("666"); |
输入必须为合法数字,否则报错。 |
stod(s)/stof(s) |
将字符串转double/float 。 |
double d = stod("3.14"); |
同上。 |
异常捕获
作用
- 避免程序因错误崩溃,捕获异常后可正常处理并提示用户(如非数值字符串转整数时防止程序卡死)。
基本语法
try {
// 可能抛出异常的代码(如stoi("非数值字符串"))
} catch (const std::exception& e) {
// 异常处理代码(可通过e.what()获取错误信息)
}
流程控制
条件分支
语句 |
语法结构 |
特点 |
if |
if (条件) { 代码块; } |
单分支结构,条件为true 时执行代码块,支持嵌套。 |
if...else |
if (条件) { 代码块1; } else { 代码块2; } |
双分支结构,条件为false 时执行else 代码块,可多层嵌套。 |
switch |
switch (变量) { case 常量: 代码块; break; default: 代码块; } |
多分支结构,按case 常量匹配执行,需用break 跳出(支持贯穿),default 可选。 |
循环
语句 |
语法结构 |
执行顺序 |
while |
while (条件) { 循环体; } |
先判断条件,为true 时执行循环体,可能一次不执行。 |
do...while |
do { 循环体; } while (条件); |
先执行一次循环体,再判断条件,至少执行一次。 |
for |
for (初始化; 条件; 增量) { 循环体; } |
适用于已知次数的循环,按“初始化→条件判断→循环体→增量”顺序执行。 |
控制关键字
关键字 |
作用 |
适用场景 |
break |
跳出当前循环或switch 语句,终止后续执行。 |
提前结束循环或switch 分支(如找到匹配项后退出)。 |
continue |
跳过本次循环剩余代码,直接进入下一次循环。 |
忽略当前循环的剩余逻辑(如过滤特定条件)。 |
goto |
无条件跳转到指定标签位置。 |
不推荐使用(破坏代码结构),仅用于极特殊场景(如深度嵌套跳出)。 |
goto注意事项
- 语法:
goto 标签; 标签: 代码;
- 限制:不能跳过变量定义(如
goto L; int x=0; L:
会编译错误)。
- 替代方案:优先使用循环或函数返回替代
goto
。
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com