测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看
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 章的计算机常识与编程入门串起来自测。