B7
C 与 C++ 从哪来、有哪些版本
引入
章前总览 编程语言像手机系统一样会不断升级。了解 C/C++ 的来龙去脉,考试遇到“版本、标准化、万能头文件”这类题就不慌;写代码时也知道自己大概站在哪一代语言上。
逻辑链条:
- C1:C 从哪来 → C++ 又从哪来
- C2:为什么要“标准化”(像手机定型号)
- C3:常见版本时间线:98 → 11 → 14 → 17 → 20
- C4:万能头文件 <bits/stdc++.h> 要注意什么
1 C1. 名字里的“家谱”
C 语言的名字,来自更早的 B 语言;B 又和 BCPL 有渊源。可以把它想成一条不断改进的“家族树”。
用一句话说清
- 肯·汤普森(Ken Thompson)发明了 B 语言;B 受到 BCPL(Basic Combined Programming Language)影响。
- 后来在贝尔实验室发展出 C(约 20 世纪 70 年代初)。
- 80 年代初,在 C 的基础上扩展出 C++——多了面向对象等能力,但仍兼容很多 C 的写法。
- 所以教材常说:C++ 由 C 发展而来,二者都是高级语言。
2 C2. 为什么语言要“定版本”
语言会一直借鉴别人的好点子。改到一定程度,就要定一个稳定版本,大家按同一套规则写、按同一套规则编译——这叫标准化。
生活类比
- 像手机厂商:性能升级、功能加多后,会发布一个新的型号。
- C++ 的标准化由 ISO/IEC 负责,每个正式版本对应一份国际标准。
- 没有标准,甲编译器认、乙编译器不认,程序就很难到处运行。
3 C3. 常见 C++ 版本(记主干即可)
考试一般不要求背细枝末节,但要知道:版本按年份叫,后面的版本通常能力更多。
时间线速记
C++98 / C++03 → 第一个国际标准,打好底子
C++11 → 大更新(自动类型、智能指针等)
C++14 → 在 11 上小改进
C++17 → 又一批实用新特性
C++20 → 继续扩展(概念、协程等)
…… → 还在演进中
- C++98(常与 C++03 一起提):第一个国际标准化版本,包含基本语言特性与标准库。
- C++11:一次“大升级”,写起来更方便、更安全。
- C++14 / 17 / 20:在前一版上继续增强;初学一级用到的语法,大多在较早期版本里就有。
- GESP 一级重点是把基础语法练熟;版本名知道“越新功能越多”就够入门。
易混点
- 书上有时把 C++98 简写成 C98 一类写法——指的仍是 C++ 标准年代,不要和“纯 C 语言”搞混。
- 你电脑上的 Dev-C++ / 其他 IDE,默认可能按某一标准编译;报奇怪错时,偶尔和“标准开关”有关,初学先保证代码写法规范。
4 C4. 万能头文件要心里有数
有人喜欢写 #include <bits/stdc++.h>,一次引入一大堆头文件。方便,但不是 C++ 标准规定的写法。
怎么理解
- 它依赖特定编译器/环境,并不属于标准库规范本身。
- 竞赛里常见;教材入门阶段更鼓励你知道自己真正用了哪些头(如
iostream)。 - 使用它时,一般仍要配合
using namespace std;。
补充说明
不推荐
#include <bits/stdc++.h>
// 不知道为什么要写,换环境就可能挂
问题:换编译器或评测环境时,可能找不到这个头文件。
推荐写法
#include <iostream>
using namespace std;
优点:意图清晰,更符合标准写法,排错也容易。
本章小结
把本章收成三句,方便复习:
1) C → C++,都是高级语言,一直在升级
2) 升级到一定阶段会标准化(ISO),形成 C++98/11/14/17/20…
3) bits/stdc++.h 方便但非标准;入门优先写 iostream
✓
里程碑达成:
你对 C/C++ 的“家谱”和版本有了整体印象。下一章用一组 GESP 风格基础题,把第 1 章的计算机常识与编程入门串起来自测。