C语言规范
C语言规范
一、花括号{}的省略
省略花括号的唯一核心原则是:
核心原则:控制语句下方只有「一条语句」时
当
if、else、for、while或do...while的控制范围内只有紧随其后的第一条语句时,花括号{}可以省略。
二、缩进(tab)影不影响运行
完全不影响。
在 C 语言中,换行符、空格、Tab(制表符) 统称为“空白字符”(Whitespace)。对于编译器(翻译代码给电脑听的程序)来说,这些全是透明的,它根本不在乎。
缩进(按 Tab)的核心作用是表现逻辑的层级关系。
- 如果不缩进: 就像读一篇没有标点、没有段落的文章,你很难一眼看出来哪个
if管着哪行代码,哪个括号匹配哪个括号。 - 缩进后: 你一眼就能看出:“哦,这行
printf是属于for循环里面的子动作”。
坚持缩进: 虽然不影响运行,但一定要养成层级对齐的好习惯。这是程序员的“脸面”。通常只要遇到 {,下一行就开始缩进(按一次 Tab)。遇到 },缩进就退回一级。
使用自动格式化工具: 你不需要手动敲空格对齐。绝大多数写代码的软件都有“一键排版”功能:
- VS Code: 按
Shift+Alt+F。 - Visual Studio: 按
Ctrl+K,松手后再按Ctrl+D。 - Dev-C++: 菜单栏里通常有
Astyle->Format Code。
三、花括号同行/次行
我问了问哈基米:
这是一个非常经典的问题,在程序员界甚至被称为“圣战”(Holy War)。这两种写法都有各自的名字和庞大的支持群体。
要想写得像个“资深程序员”,关键不在于你选哪一种,而在于你是否理解它们背后的逻辑,以及你能否在项目中保持绝对的统一。
下面我为你详细分析这两种主流写法,并给出建议。
1. 写法一:同行风格 (K&R Style / One True Brace Style)
左花括号 { 紧跟在语句的同一行,右花括号 } 单独占一行。
1 | |
- 来源: 源自 C 语言之父 Kernighan 和 Ritchie 的经典著作《C程序设计语言》(The C Programming Language)。
- 谁在用:
- Linux 内核及大多数 Unix/Linux 开源项目。
- Java、JavaScript、Go、Rust 等语言的官方推荐标准。
- Google 的 C++ 代码规范。
- 优点:
- 紧凑: 可以在一屏内显示更多代码逻辑,减少滚屏次数。
- 节奏感: 代码阅读视线流畅,不会被过多的空白行打断。
- 给人感觉: 极客、老派 Unix 黑客、现代全栈开发。
2. 写法二:次行风格 (Allman Style / ANSI Style)
左花括号 { 换行,与 for 对齐,右花括号 } 也对齐。
1 | |
- 来源: Eric Allman(Sendmail 的作者)。
- 谁在用:
- C# (Microsoft) 的官方标准。
- Visual Studio 的默认 C++ 格式化设置。
- 很多嵌入式开发团队(因为嵌入式代码逻辑复杂,强调块的清晰度)。
- 优点:
- 对称美: 括号上下对齐,视觉上更容易看清代码块的开始和结束。
- 清晰: 对于初学者或者在处理非常长的嵌套循环时,不容易看错层级。
- 给人感觉: 严谨、企业级开发、微软系风格。
3. 怎样才更像“资深程序员”?
资深程序员并不会因为你用了哪种风格而觉得你不专业,但如果出现以下情况,他们会觉得你是新手:
混用(最忌讳): 一会儿写在后面,一会儿换行写。
资深的做法: 在一个文件中,甚至整个项目中,严格保持一种风格。
不遵循团队规范: 假如你进了一个公司,已有代码全是“换行写”,你非要“同行写”,这就不专业。
资深的做法: 入乡随俗。
缩进混乱: 无论花括号放哪,如果不正确缩进(通常是 4 个空格或 1 个 Tab),那就是大忌。
4. 给你的建议
既然你是物联网工程专业的学生,正在学 C 语言:
推荐写法:同行风格 (K&R Style)
C
1
2
3for (int i = 0; i < 10; i++) {
// 循环体
}理由: C 语言的经典书籍和大多数 C 语言库(如标准库源码)都采用这种风格。它更符合 C 语言“紧凑、高效”的气质。而且当你以后接触 Java 或 Python(Python虽然没括号,但也是冒号紧跟)等其他语言时,这种习惯更通用。
例外情况: 如果你使用的是 Visual Studio (IDE) 编写 C 代码,它默认会帮你换行。这种情况下,顺应 IDE 的默认设置即可,不用刻意去改。
总结
- 大众化: 同行风格(K&R)在所有编程语言中占比更高。
- 阅读方便: 见仁见智,Allman 风格对新手更友好,K&R 风格阅读效率更高。
- 资深感: 一致性才是资深的标志。
在这个阶段,建议你强迫自己使用 K&R 风格(同行写),这是 C 语言最正统的“血脉”。
要在 VS Code 里实现自动格式化,并且强制让它按照我们刚才说的 K&R 风格(花括号不换行) 来排版,只需要简单的三步配置。
请跟着我操作:
第一步:确保安装了 C/C++ 插件
VS Code 本身只是一个编辑器,它需要插件才能读懂 C 语言。
- 点击左侧侧边栏的 扩展图标(或者按
Ctrl + Shift + X)。 - 搜索
C/C++。 - 安装由 Microsoft 开发的那个官方插件(通常是下载量最高的那个)。 (如果你已经能运行代码了,这一步通常已经做好了)
第二步:学会手动格式化(快捷键)
这是最基础的技能。当你写了一堆乱糟糟的代码时:
- 快捷键(Windows):
Shift + Alt + F - 右键菜单: 在代码编辑区点击右键 -> 选择 **“格式化文档” (Format Document)**。
试一下,你会发现代码瞬间整齐了。但是,默认情况下它可能还是会把花括号换行(这是微软的默认风格),我们需要在第四步改掉它。
第三步:设置“保存时自动格式化”(核心技巧)
真正的资深程序员是不会手动去按格式化快捷键的。我们将它设置为“只要按下 Ctrl+S 保存,代码自动变整齐”。
- 点击左下角的 齿轮图标 -> **设置 (Settings)**(或者按快捷键
Ctrl + ,)。 - 在顶部的搜索框输入:
format on save。 - 找到 Editor: Format On Save 这一项,把前面的勾 打上。
现在的效果: 你随便写一行乱代码,比如 for(int i=0;i<5;i++){,然后按 Ctrl + S,你会发现空格自动补全了,缩进也自动调整了。这就是“如丝般顺滑”的体验。
第四步:调整风格为 K&R(花括号不换行)
默认的 C/C++ 插件可能会使用 “Visual Studio” 风格(花括号换行)。为了实现你想要的 K&R 风格(同行写法),我们需要改一下配置:
- 继续在 设置 (Settings) 里,搜索框输入:
clang_format_fallbackStyle。 - 你会看到一个选项叫 C_Cpp: Clang_format_fallback Style。
- 把它默认的
Visual Studio改为LLVM或者 **Google**。- 推荐填入:
LLVM - (注:LLVM 风格就是标准的 K&R 风格,花括号不换行,且缩进合理,非常适合 C 语言)
- 推荐填入:
四、visual studio创建.c/.cpp
在 Visual Studio (VS) 中学习 C 语言,**必须手动将后缀名改为 .c**。
虽然 VS 默认只有 .cpp (C++) 的选项,但它完全支持 C 语言,只需要你通过“改名”来告诉它。
为什么一定要用 .c?
- 编译规则不同:
- **
.c**:VS 会调用 C 编译器。这是你现在学的,语法严格符合 C 标准(如malloc不需要强制类型转换)。 - **
.cpp**:VS 会调用 C++ 编译器。虽然 C++ 兼容大部分 C,但它们是两种语言。如果用.cpp写 C,可能会遇到很多“莫名其妙”的报错(因为 C++ 的类型检查更严),或者让你养成了写“不纯正 C 代码”的坏习惯。
- **
- 身份识别: 这能明确告诉 IDE 和其他读你代码的人:“这是一份纯 C 语言代码”。