当前位置: 首页 > news >正文

C语言标准 —— C89(C90)、C99、C11、C17、C2X

C语言主要的三个标准:C89(C90)、C99、C11、

K&R C

指的是 C 语言的原始版本。1978年,C 语言的发明者丹尼斯·里奇(Dennis Ritchie)和布莱恩·柯林(Brian Kernighan)合写了一本著名的教材《C 编程语言》(The C programming language)。由于 C 语言还没有成文的语法标准,这本书就成了公认标准,以两位作者的姓氏首字母作为版本简称“K&R C”。

ANSI C(又称 C89 或 C90) 标准

由于C语言被各大公司所使用(包括当时处于鼎盛时期的 IBM PC),因此到了 1989 年,C语言由美国国家标准协会(ANSI)进行了标准化,此时C语言又被称为 ANSI C。

而仅过一年,ANSI C 就被国际标准化组织 ISO 给采纳了。此时,C语言在 ISO 中有了一个官方名称——ISO/IEC 9899: 1990。其中:

  • 9899 是C语言在 ISO 标准中的代号,像 C++ 在 ISO 标准中的代号是 14882;

  • 而冒号后面的 1990 表示当前修订好的版本是在 1990 年发布的。

对 于ISO/IEC 9899: 1990 的俗称或简称,有些地方称为 C89,有些地方称为 C90,或者 C89/90。不管怎么称呼,它们都指代这个最初的C语言国际标准。

这个版本的C语言标准作为 K&R C 的一个超集(即 K&R C 是此标准C的一个子集),把后来引入的许多非官方特性也一起整合了进去。其中包括了从 C++ 借鉴的函数原型(Function Prototypes),指向 void 的指针,对国际字符集以及本地语言环境的支持。在此标准中,尽管已经将函数定义的方式改为现在我们常用的那种方式,不过K&R的语法形式仍然兼容。

C99 标准

在随后的几年里,C语言的标准化委员会又不断地对C语言进行改进,到了 1999 年,正式发布了 ISO/IEC 9899: 1999,简称为 C99 标准。

C99 标准引入了许多特性,包括内联函数(inline functions)、可变长度的数组、灵活的数组成员(用于结构体)、复合字面量、指定成员的初始化器、对IEEE754浮点数的改进、支持不定参数个数的宏定义,在数据类型上还增加了 long long int 以及复数类型

毫不夸张地说,即便到目前为止,很少有C语言编译器是完整支持 C99 的。像主流的 GCC 以及 Clang 编译器都能支持高达90%以上,而微软的 Visual Studio 2015 中的C编译器只能支持到 70% 左右。ANSI C(又称 C89 或 C90)

C11 标准

2007 年,C语言标准委员会又重新开始修订C语言,到了 2011 年正式发布了 ISO/IEC 9899: 2011,简称为 C11 标准。

C11标准新引入的特征尽管没 C99 相对 C90 引入的那么多,但是这些也都十分有用,比如:字节对齐说明符、泛型机制(generic selection)、对多线程的支持、静态断言、原子操作以及对 Unicode 的支持

C17 标准

C17(也被称为为 C18)是于2018年6月发布的 ISO/IEC 9899:2018 的非正式名称,也是目前(截止到2020年6月)为止最新的 C语言编程标准,被用来替代 C11 标准。

C17 没有引入新的语言特性,只对 C11 进行了补充和修正

C2X 标准

标准化组织正在讨论 C 语言的下一个版本,据说可能会在2023年通过,到时就会称为 C23。

关于C语言的发展历史、语言特点等介绍可参考百度百科:https://baike.baidu.com/item/c%E8%AF%AD%E8%A8%80/105958?fr=aladdin。

相关文章:

C语言标准 —— C89(C90)、C99、C11、C17、C2X

C语言主要的三个标准:C89(C90)、C99、C11、K&R C 指的是 C 语言的原始版本。1978年,C 语言的发明者丹尼斯里奇(Dennis Ritchie)和布莱恩柯林(Brian Kernighan)合写了一本…...

基于Java+Dubbo设计的智能公交查询系统

一、项目背景 随着经济的飞速发展,人们的生活质量有了较大的提高,城市居民的出行变得越来越频繁,城市交通也面临越来越多的挑战。城市公共交通具有客流量大、成本低、效率高、节约资源等优势,因此,如何大力发展公交产业,鼓励人们乘坐公交出行,进而改善交通状况,是一个值得思考…...

go语言的并发编程

并发编程是 Go语言的一个重要特性,而 go语言也是基于此而设计出来的。 本文将会介绍如何使用go-gc中的“runtime”方法实现 go语言中的并发编程。 在之前的文章中,我们已经对 runtime方法进行了详细介绍,这次文章将对 runtime方法进行深入分析,并讲解如何在go-gc中使用该方…...

亚马逊要求UL94防火测试阻燃测试标准及项目

UL94认证是什么?分几个等级?是如何表示各等级?带电的产品上架亚马逊都需要相关的UL报告,需要有ISO 17025资质的实验室出具的测试报告才能正常销售和恢复链接,UL94防火测试则是其中一项。UL94试验共有五种:1.B级的水平燃烧试验2.…...

ClickHouse 合并树表引擎 MergeTree 原理分析

目录 前言 MergeTree 存储 MergeTree思想 MergeTree存储结构 MergeTree查询 索引检索 数据Sampling 数据扫描 建表​ 数据存储​...

用YOLOv8推荐的Roboflow工具来训练自己的数据集

YOLOv8是Ultralytics公司开发的YOLO目标检测和图像分割模型的最新版本,相较于之前的版本,YOLOv8可以更快速有效地识别和定位图像中的物体,以及更准确地分类它们。 作为一种深度学习技术,YOLOv8需要大量的训练数据来实现最佳性能。…...

三层交换机【实验】

目录 1、要求: 2、拓扑: 3、创建vlan和端口定义并划入vlan: 4、创建以太网中继Eth-Trunk使sw1和sw2的相互冗余并且不浪费链路: 5、使用mstp定义组和对应的根: 6、配置网关冗余: 7、核心层的路由的IP配…...

Anolis 8.6 部署 Kafka 3.3.1 安装和测试(二)

动态初始化Kafka消费者实例一.Kafka 环境搭建二.动态初始化消费者1.Topic定义2.方法处理器工厂3.参数解析器(Copy SpringBoot 源码)4.消费接口和消费实现5.动态初始化1.关键类简介2.动态初始化实现一.Kafka 环境搭建 参考:Kafka搭建和测试 …...

sed和awk

文章目录1、sed的简单介绍2、sed的使用方法2.1 命令行格式2.2 案例2.3 sed结合正则使用2.4 脚本格式3、awk的简单介绍4、awk的使用方法4.1 命令行模式4.2 脚本模式5、awk内部相关变量5.1 案例6、awk工作原理7、awk进阶使用8、awk脚本编程8.1 案例1、sed的简单介绍 sed是流编辑…...

使用STM32 CUBE IDE配置STM32F7 用DMA传输多通道ADC数据

我的使用环境: 硬件:STM32F767ZGT6、串口1、ADC1、16MHz晶振、216MHz主频 软件:STM32 CUBE IDE 优点:不用定时触发采样,ADC数据是不停的实时更新,ADC数据的更新频率根据采样时钟和采样周期决定,…...

linux 学习(持续更新)

一:初识linux 新装操作环境: mac intel电脑 CentOS系统版本:CentOS-8.1.1911 在这里解释一下[chenllocalhost /]$这句话的含义: chenl是用户名,也就是你自己起的名字。 是分割的符号 localhost是主机名,也…...

Nacos【一】Nacos集群部署配置

系列文章目录 暂无 文章目录系列文章目录前言一、Nacos集群架构1.ip直连2. SLB3. 域名-SLB二、集群部署准备2.1 机器准备2.2 Nginx安装配置1.安装2.负载均衡配置2.3 nacos安装配置1.nacos节点2. MySQL准备1.Docker安装MySQL2. nacos对应数据库初始化三、 集群启动1.失败原因汇…...

“亚洲一号”也能上市?REITs背后的物流设施风起云涌

京东最近发生了两件大事,两件都与物流基础设施有关。 一件是2月8日,嘉实京东仓储物流封闭式基础设施证券投资基金(简称“京东仓储REIT”)正式登陆上交所,投资者获得了机会,去分享京东三处物流园区的收益&a…...

2023养老展,CBIAIE第十届中国北京国际老年产业博览会

8月招商季,第十届中国(北京)国际老年产业博览会再次盛大举办; CBIAIE北京国际老年产业博览会位域优势: ——北京,中国首都,世界一线城市,地处中国北部、华北平原北部,东…...

【Android -- 每日一问】现在 Android 怎么学?学什么?

不管在任何行业,任何岗位,初级技术人才总是供大于求;不管任何行业、岗位,技术过硬的也都是非常吃香的! 这几年 Android 新技术的迭代明显加速了,有来自外部跨平台新物种的冲击,有去 Java 化的商…...

JVM垃圾回收

概述 Java是支持自动垃圾回收的,有些语言不支持自动垃圾回收(C)自动垃圾回收不是Java的首创 垃圾是什么? 在 JVM 中垃圾是指在运行程序中没有任何指针指向的对象,这个对象就是需要被回收的垃圾。 哪些区域需要回收…...

clickhouse集群安装

单机安装 yum install yum-utilsrpm --import https://repo.clickhouse.com/CLICKHOUSE-KEY.GPGyum-config-manager --add-repo https://repo.clickhouse.com/rpm/clickhouse.reposudo yum install clickhouse-server clickhouse-client 配置文件 vim /etc/clickhouse-serve…...

Zookeeper入门

Zookeeper入门概述特点结构应用场景选举机制节点信息监听原理写数据原理分布式锁概述 Zookeeper是一个开源的分布式的,为分布式框架提供协调服务的Apache项目。 Zookeeper 从设计模式的角度来开:是一个基于观察者模式设计的分布式服务管理框架&#xf…...

JavaScript

BOM核心对象docunmentBOM核心对象windowBOM包含着DOMF12即可打开浏览器控制台navigator(浏览器版本)、history(浏览器历史记录),location(地址信息)、screen(屏幕相关)JS输出形式:浏览器输出:wi…...

.gitignore 常用忽略规则

.gitignore常用忽略语法 1、空格不匹配任意文件,可作为分隔符,可用反斜杠转义 2、以井号#开头的文件标识注释,可以使用反斜杠进行转义 3、以斜杠/开头表示目录 4、以星号*通配多个字符 5、以问号?通配单个字符 6、以方括号[]包含单个字符的…...

2026论文写作工具红黑榜:AI论文工具怎么选?用数据说话!

2026年论文写作工具红黑榜出炉,千笔AI、ThouPen、豆包位列红榜,适配国内学术规范,助力高效科研。黑榜需避开低质免费工具、无真实引用平台及过度依赖全文生成的工具。选择时建议按需求匹配度 - 数据可信度 - 成本承受力三维模型进行评估。 一…...

Android Studio中文界面本地化指南:提升开发效率的全场景解决方案

Android Studio中文界面本地化指南:提升开发效率的全场景解决方案 【免费下载链接】AndroidStudioChineseLanguagePack AndroidStudio中文插件(官方修改版本) 项目地址: https://gitcode.com/gh_mirrors/an/AndroidStudioChineseLanguagePack And…...

5分钟搞定OpenClaw飞书接入:Qwen3.5-9B对话机器人配置

5分钟搞定OpenClaw飞书接入:Qwen3.5-9B对话机器人配置 1. 为什么选择OpenClaw飞书Qwen3.5-9B组合 上周我在整理团队周报时,突然意识到一个痛点:每次都要反复切换浏览器、文档和聊天工具,手动复制粘贴信息。这种机械操作不仅浪费…...

Llama-3.2V-11B-cot部署教程:双卡4090一键启动视觉推理工具

Llama-3.2V-11B-cot部署教程:双卡4090一键启动视觉推理工具 1. 项目概述 Llama-3.2V-11B-cot是基于Meta多模态大模型开发的高性能视觉推理工具,专为双卡4090环境优化。它解决了传统大模型部署复杂、视觉权重加载失败等痛点,让普通用户也能轻…...

vSphere环境安全指南:使用vCenter创建受限用户的最佳实践

vSphere环境安全指南:精细化权限管理实战 在虚拟化基础设施管理中,vSphere环境的安全性直接关系到企业核心业务的稳定运行。作为高级管理员,我们常常面临一个两难选择:既要确保团队成员能够高效完成工作,又要防止过度授…...

NaViL-9B开源镜像免配置教程:无需下载权重,5分钟跑通图文问答

NaViL-9B开源镜像免配置教程:无需下载权重,5分钟跑通图文问答 1. 快速了解NaViL-9B NaViL-9B是由专业研究机构开发的原生多模态大语言模型,它不仅能像普通AI那样进行文字对话,还能看懂图片内容。想象一下,你上传一张…...

NumPy:数组复制与视图

在使用 NumPy 进行数据处理时,数组对象不仅可以被读取或修改,还经常需要在不同变量或不同数组之间进行“复制”。例如:将一个数组赋值给另一个变量、通过切片获取数组的一部分、或显式创建新的数组副本。需要注意的是,这些操作在语…...

ollama运行QwQ-32B多场景落地:芯片设计文档理解、RTL代码生成

ollama运行QwQ-32B多场景落地:芯片设计文档理解、RTL代码生成 1. 引言:当AI遇到芯片设计 芯片设计工程师每天都要面对海量的技术文档和复杂的RTL代码编写工作。传统的手工方式不仅效率低下,还容易出错。有没有一种方法能让AI帮助我们理解技…...

【deepseek】SYCL™ 2020 Specification 简介

SYCL™ 2020 Specification 简介 SYCL 2020 是由 Khronos Group 发布的异构计算标准,它是 SYCL(发音为 “sickle”)规范的最新主要版本。SYCL 是一种基于标准 C 的编程模型,旨在简化在各种硬件加速器(如 CPU、GPU、FPG…...

RWKV7-1.5B-g1a参数避坑:top_p=0.9在中文任务中易引发事实性错误实测

RWKV7-1.5B-g1a参数避坑:top_p0.9在中文任务中易引发事实性错误实测 1. 模型简介与测试背景 rwkv7-1.5B-g1a是基于RWKV-7架构的多语言文本生成模型,特别适合中文场景下的基础问答、文案续写和简短总结任务。作为一款轻量级模型,它能在单卡2…...