c++的代码规范

为了让我们在书写代码的时候更加规范,让读者的观感提升,我们不仅要遵守语法规则,更需要遵守一套写法规范,以提升代码可读性。
为了更好的阅读,笔者从开头写到结尾。

一、头文件 & 命名空间

  1. 输入输出 cin/cout 必须包含
#include <iostream>   // 标准输入输出
#include <vector>     // 使用vector需要
using namespace std;  // OJ常用,省去std::前缀;大型项目不推荐

:#include 放在最顶部,不能写在函数里面

#include 是预处理指令,末尾不加;

二、变量声明

  1. 变量必须先声明,后使用
int a;    // 声明
a = 10;
  1. 同一作用域,不能重复定义同名变量
int x=5;
int x=10; 
  1. 局部变量(函数内部)不会自动初始化,值是随机垃圾值;全局变量默认初始化为 0。

三、数组

int arr[10005];
  1. 下标从 0 开始;数组大小 N,合法下标:0 ~ N-1
  2. ❌ 数组越界:访问 arr[N]、负数下标 arr[-1] → 未定义行为,可能段错误
  3. 栈数组(写在 main / 函数内)大小有限;超大数组建议写在全局。
int num[10005]; //全局,安全
int main(){
    int a[10005]; //局部栈数组,小尺寸没问题,几百万就栈溢出段错误
}

四、函数语法

// 返回类型 函数名(参数列表)
void Merge(int m, int n, int l, int a[]){
    //函数体
}
  1. 函数写在调用之前,或者提前写函数声明(原型)

如果你把 Mergesort 写在 main 后面,要在 main 前面写原型:

void Mergesort(int left,int right,int a[]);
  1. 参数数组 int a[] 本质是指针,函数内部不能直接用 a.size ()
  2. void 代表无返回值,函数里面不能 return 一个值;有返回值函数必须 return 对应类型数据
int f(){
    return 99;
}
void g(){
    return; //可以,直接退出函数
}

五、分支、循环

if

if(条件){

}else if(条件){

}else{

}

条件括号不能省略;{} 只有单行语句可以省略,但刷题建议永远加上,防止 bug。

for 循环

for(初始化; 判断条件; 更新){

}

⚠️ 三个部分用分号;隔开,不是逗号,很多人写错。

while 循环

while(条件){

}

六、运算符

  • = 赋值;== 判断相等(千万不要写混)
  • && 逻辑与;||逻辑或;!非
  • > < >= <= 比较

优先级:算术 > 比较 > 逻辑运算,复杂条件建议加括号。

七、vector(你代码在用)

vector<int> d;
d.push_back(10); //尾部追加元素
d.size();        //返回元素个数,返回值是size_t(无符号整数)

⚠️ d[i] 访问下标,i 必须小于 d.size (),越界同样未定义行为,可能崩溃。

八、分号 ; 坑(高频语法错误)

  1. for / while / if 后面不要随便加分号
if(x>0);{   // ❌ 这里;代表if结束,大括号代码永远执行
    cout<<x;
}
  1. 声明、语句末尾加分号;#include、函数定义的{前面不加
void f() // 这里不要;
{

}

九、注释

//单行注释,到本行结束
/* 多行注释
可以跨多行 */

注释不参与编译,不会影响程序运行。

十、语法错误 vs 运行错误(重点区分,刷题必考)

  1. 编译错误(语法错):代码写法违反 C++ 语法,编译器直接拒绝,程序无法生成。
    • 少分号、括号不匹配、变量未定义、=和==写混、头文件缺失
  2. 运行时错误(段错误属于这类):语法没问题,可以编译,跑的时候崩溃。
    • 数组越界、空指针、栈溢出
  3. 逻辑错误:编译成功,正常跑完,输出答案不对(你之前那个归并 bug)

十一、大括号规范(风格)

OJ 没有强制,两种都合法:

//风格1(你代码用的)
void Merge(){
}

//风格2
void Merge()
{
}

只要成对匹配就行,左右大括号必须配对,少一个直接编译报错。

十二、基础类型

int 整型;double浮点;char字符;bool布尔(true/false)

bool 条件:非 0 即为 true,0 代表 false

posted @ 2026-10-04 12:01  rui-ni  阅读(6)  评论(0)    收藏  举报