27.C++入门语法知识总结

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)。

变量命名规范

必须遵守的规则

  • 不能重名、以数字开头、使用关键字(如intif)、包含特殊符号(除_外)。

命名法

  • 驼峰法:myName(变量/函数)。
  • 帕斯卡法:MyName(类名)。
  • 下划线法:my_name(C++常用)。
  • 匈牙利法:nAgen表示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"; 空字符串

特殊用法:取消转义

  • 语法:R"(原始字符串)",忽略\的转义作用。
  • 示例:
    string raw = R"(\n\t"C:\path"")";  
    cout << raw;  // 输出:\n\t"C:\path""
    

运算符

类型 运算符 说明 优先级(从高到低)
算术运算符 + - * / % 加减乘除、取余运算,整数除法截尾(如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=105&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

×

喜欢就点赞,疼爱就打赏