C++入门指南:基础语法篇

📅 发布时间:2026/7/6 13:48:51 👁️ 浏览次数:
C++入门指南:基础语法篇
一、变量与数据类型1. 基本数据类型C 中的基础数据类型分为四大类核心用于存储不同类型的数据适配不同场景类型分类具体类型说明示例整型int基本整数类型通常4字节int age 25;short短整型2字节范围更小short score 95;long长整型4/8字节视系统而定long population 1000000L;long long超长整型8字节支持更大数值long long bigNum 12345678901234LL;无符号整型unsigned int仅存非负数范围翻倍unsigned int count 100;浮点型float单精度浮点型4字节精度较低float pi 3.14f;必须加f否则默认doubledouble双精度浮点型8字节推荐优先使用double salary 12345.67;字符型char存储单个字符1字节本质是ASCII码值char ch A;单引号包裹wchar_t宽字符型支持中文等多字节字符wchar_t wch L中;加L前缀布尔型bool仅存true1或false0bool isPass true;2. 常量修饰符const作用定义不可修改的常量只读变量编译期检查避免误修改。核心特点必须初始化且初始化后不能赋值修改局部const存储在栈上全局const存储在只读数据区修改会崩溃。示例代码语言C自动换行AI代码解释const int MAX_AGE 100; // 常量不可修改 // MAX_AGE 200; // 编译错误只读变量不能赋值 const double PI 3.1415926;3. 类型别名typedef作用给已有数据类型起别名简化复杂类型书写如指针、结构体类型。语法typedef 原类型 别名;示例代码语言C自动换行AI代码解释typedef int Score; // 给int起别名Score Score math 90; // 等价于 int math 90; typedef char* String; // 给字符指针起别名StringC风格字符串常用 String name Tom; // 等价于 char* name Tom;注意C11后推荐用using替代typedef语法更清晰支持模板别名但typedef仍是基础考点。二、运算符与表达式1. 算术运算符用于数值计算注意整数除法和取模的特性运算符功能示例结果-加、减535-38、2*/乘、除5*35/315、1整数除法舍弃小数部分%取模余数5%37%42、3仅支持整型易错点除数不能为0运行时崩溃浮点型除法需显式转换(double)5/3结果为1.666...。2. 关系运算符用于比较两个值的关系返回bool类型true/false运算符功能示例结果等于53false!不等于5!3true大于、小于5353true、false大于等于、小于等于5532true、false面试坑不要把写成赋值运算符如if (a5)会将5赋值给a且表达式结果为5非0即true逻辑错误。3. 逻辑运算符用于逻辑判断与/或/非支持短路求值面试高频考点运算符功能短路规则示例结果逻辑与都真才真左为false时右表达式不执行(35)(a)falsea不自增逻辑或一真即真左为true时右表达式不执行(35)(a)truea不自增!逻辑非取反无短路!(35)true4. 复合赋值运算符简化“变量 变量 运算符 表达式”的写法效率略高于普通赋值运算符等价写法示例结果a a ba2; a3;a5-a a - ba5; a-2;a3*/%同理a4; a*2;a85. 自增自减运算符前置 vs 后置核心考点改变变量值的同时返回值不同类型语法执行逻辑示例结果前置a--a先自增/自减再返回变量本身a2; ba;a3b3后置aa--先返回变量原值再自增/自减a2; ba;a3b2示例代码语言C自动换行AI代码解释int a 1; int b a a; // 计算过程1a返回1 3a先自增为3 → b4 cout b; // 输出4三、控制流1. 分支结构if-else根据条件执行不同代码块支持嵌套语法展开代码语言C自动换行AI代码解释if (条件1) { // 条件1为true时执行 } else if (条件2) { // 条件1为false、条件2为true时执行 } else { // 所有条件都为false时执行 }示例展开代码语言C自动换行AI代码解释int score 85; if (score 90) { cout 优秀 endl; } else if (score 60) { cout 及格 endl; // 执行此分支 } else { cout 不及格 endl; }注意单语句块可省略{}但推荐始终添加避免逻辑错误。2. 分支结构switch适用于多条件等值判断比if-else更简洁语法展开代码语言C自动换行AI代码解释switch (表达式) { // 表达式必须是整型/字符型/枚举型 case 常量1: // 执行代码 break; // 跳出switch必须加否则穿透 case 常量2: // 执行代码 break; default: // 所有case不匹配时执行可选 }示例展开代码语言C自动换行AI代码解释char grade B; switch (grade) { case A: cout 90; break; case B: cout 80-89; // 执行此分支 break; case C: cout 60-79; break; default: cout 不及格; }面试考点break的作用避免case穿透、default的位置可在任意处无匹配时执行。3. 循环结构for/while/do-while1for循环最常用适合已知循环次数语法for (初始化; 循环条件; 增量/减量) { 循环体 }示例遍历1~5代码语言C自动换行AI代码解释for (int i 1; i 5; i) { cout i ; // 输出1 2 3 4 5 }灵活用法初始化和增量可省略如for (; ; )是死循环。2while循环适合未知循环次数先判断后执行语法while (循环条件) { 循环体 }示例累加1~100代码语言C自动换行AI代码解释int sum 0, i 1; while (i 100) { sum i; i; } cout sum; // 输出50503do-while循环先执行后判断至少执行一次语法do { 循环体 } while (循环条件);注意末尾分号示例输入密码直到正确为止代码语言C自动换行AI代码解释string pwd; do { cout 输入密码; cin pwd; } while (pwd ! 123456); cout 密码正确;4. 循环控制break/continuebreak跳出当前循环或switch语句直接终止continue跳过本次循环剩余代码直接进入下一次循环示例展开代码语言C自动换行AI代码解释for (int i 1; i 5; i) { if (i 3) break; // 跳出循环后续i4、5不执行 cout i ; // 输出1 2 } for (int i 1; i 5; i) { if (i 3) continue; // 跳过i3直接执行i4 cout i ; // 输出1 2 4 5 }5. 输入输出cin/coutiomanip1基础输入输出cout输出控制台打印需包含头文件iostreamcin输入读取控制台输入支持多变量连续输入示例展开代码语言C自动换行AI代码解释#include iostream using namespace std; // 避免写std::cout下文详解 int main() { int a; string name; cout 输入姓名和年龄; cin name a; // 连续输入空格/回车分隔 cout 你好 name 年龄 a endl; // endl换行刷新缓冲区 return 0; }2格式控制iomanip头文件用于控制输出格式如保留小数、对齐、进制转换功能函数/操作符示例结果保留小数fixedsetprecision(n)cout fixed setprecision(2) 3.1415;3.14进制转换hex十六进制、oct八进制、dec十进制cout hex 255;ff对齐setw(n)宽度left左对齐/right右对齐cout setw(5) left Tom;Tom 占5位左对齐示例代码语言C自动换行AI代码解释#include iomanip // 必须包含此头文件 cout fixed setprecision(3) 1.2345 endl; // 1.235四舍五入 cout hex uppercase 255 endl; // FF大写十六进制6. 命名空间namespace作用解决命名冲突如不同库中同名函数/变量C核心特性。核心用法定义命名空间代码语言C自动换行AI代码解释namespace MySpace { int add(int a, int b) { return a b; } }使用命名空间直接指定MySpace::add(1,2);最安全using namespace 命名空间;全局引入简化书写如using namespace std;部分引入using MySpace::add;仅引入指定成员。面试考点std是C标准库的命名空间所有标准库函数/类都在std中不推荐在头文件中使用using namespace std;可能引发命名冲突。