c语言之标准(KRC 、c89、c99、c11)

news/2024/10/18 16:55:43/

K&R C

  1978年,丹尼斯•里奇(Dennis Ritchie)和布莱恩•柯林汉(Brian Kernighan)合作出版了《C程序设计语言》的第一版。书中介绍的C语言标准也被C语言程式设计师称作“K&R C”,第二版的书中也包含了一些ANSI C的标准。K&R C主要介绍了以下特色:

结构(struct)类型

长整数(long int)类型

无符号整数(unsigned int)类型

把运算符=+和=-改为+=和-=。因为=+和=-会使得编译器不知道使用者要处理i = -10还是i =- 10,使得处理上产生混淆。

  即使在后来ANSI C标准被提出的许多年后,K&R C仍然是许多编译器的最低标准要求,许多老旧的编译仍然运行K&R C的标准。

ANSI C和ISO C

  C 的第一个标准是由ANSI发布的。虽然这份文档后来被国际标准化组织(ISO)采纳并且ISO发布的修订版也被ANSI采纳了,但名称ANSI C(而不是 ISO C)仍被广泛使用。ANSI C现在被几乎所有广泛使用的编译器支持。现在多数C代码是在ANSI C基础上写的。

C89和C90

  1983年,美国国家标准协会组成了一个委员会,X3J11,为了创立 C 的一套标准。经过漫长而艰苦的过程,该标准于1989年完成,并在作为ANSI X3.159-1989 “Programming Language C”正式生效。这个版本的语言经常被称作”ANSI C”,或有时称为”C89”(为了区别C99)。 在1990年,ANSI C标准(带有一些小改动)被美国国家标准协会采纳为ISO/IEC 9899:1990。这个版本有时候称为C90或者ISO C。因此,C89和C90通常指同一种语言。 传统C语言到ANSI/ISO标准C语言的改进包括:

增加了真正的标准库

新的预处理命令与特性

函数原型允许在函数申明中指定参数类型

一些新的关键字,包括 const、volatile 与 signed 宽字符、宽字符串与字节多字符

对约定规则、声明和类型检查的许多小改动与澄清

C99

  2000年3月,ANSI 采纳了 ISO/IEC 9899:1999 标准。这个标准通常指C99。 C99新增了一些特性,如:

支持不定长的数组,即数组长度可以在运行时决定。

变量声明不必放在语句块的开头,for 语句提倡写成 for(int i=0;i<100;++i) 的形式,即i 只在 for 语句块内部有效。

初始化结构的时候允许对特定的元素赋值。

允许编译器化简非常数的表达式。

取消了函数返回类型默认为 int 的规定。
  
  但是各个公司对C99的支持所表现出来的兴趣不同。当GCC和其它一些商业编译器支持C99的大部分特性的时候,微软和Borland却似乎对此不感兴趣,他们把更多的精力放在了C++上。

C11

  在2011年12月,ANSI 采纳了 ISO/IEC 9899:2011 标准。这个标准通常即C11,它是C程序语言的最新标准。
c11新添标准


http://www.ppmy.cn/news/714127.html

相关文章

计算智能——K-means聚类算法C语言代码

K-means聚类算法 也称K均值聚类算法 是一种迭代求解的聚类分析算法&#xff0c;其步骤是随机选取K个对象作为初始的聚类中心&#xff0c;然后计算每个对象与各个种子聚类中心之间的距离&#xff0c;把每个对象分配给距离它最近的聚类中心。 1. K-Means原理 上图a表示最初的对象…

用c语言编写程序,求∑(k=1~100)k+∑(k=1~50)k2,c语言程序,求(100∑k=1 k)+(50∑k=1 k^2)+(10∑k=1 1/k) 这...

满意答案 myhso 2015.10.31 采纳率&#xff1a;54% 等级&#xff1a;8 已帮助&#xff1a;1060人 主函数main没有定义&#xff0c;在c语言中 两个整数相除返回整数 1/1 结果为 1 &#xff0c;1/2,1/3结果为0,所以 ss1/k要改为ss1.0/k ,最终的结果有小数 s不能定义为int整数&…

c语言全局变量SQR,c语言a/=SQR(k+m);是什么意思?

满意答案 NightmareJJ 2013.03.16 采纳率&#xff1a;47% 等级&#xff1a;12 已帮助&#xff1a;11233人 先看第一个 main() // 主函数 {printf("%ld\n", fun(3));} //输出fun(3)这个函数的返回值&#xff0c;3就是下一个 //函数中的n 值。 long fun (int n) //定…

【C语言】C语言实现矩阵k次幂 (模拟手工计算过程,简单逻辑)

运用递归实现k次幂运算&#xff0c;模拟手工计算 注释掉的输出部分便于调试过程中检查使用 使用说明&#xff1a;输入一个数字k&#xff0c;计算矩阵的k次幂&#xff0c;输出原矩阵以及其k次幂矩阵 矩阵的k次幂可用于以邻接矩阵存储的图的算法中&#xff0c;具体原理涉及到离…

5.21-----c语言冒泡排序--谁考了第K名

题目&#xff1a; 算法描述&#xff1a; 先创建2个数组&#xff0c;然后将学号&#xff0c;成绩都存在数组里面&#xff0c;然后里要冒泡排序法将学号&#xff0c;成绩按从小到大进行排序&#xff0c;然后输出第k名的成绩&#xff08;数组下标为k-1&#xff09;的。 #include&…

运用折半查找算法在一个有序数组中查找具体的某个数值k(c语言)

实现功能 在一个有序数组中&#xff0c;查找想要查找的某个具体数值。 如何实现 主要逻辑&#xff1a; 运用折半查找算法&#xff1a;设置中间值、左变量、右变量&#xff0c;通过比较大小不断将数组查找范围折半缩小&#xff0c;直至找到想要查找的数值k。 代码 #includ…

c语言将数组元素循环右移k位,把一个含有N个元素的数组循环右移K位

普通解法&#xff1a; 可以每次将数组中的元素右移一位&#xff0c;循环K次。每个元素右移N位后都会回到自己的位置上。因此&#xff0c;如果K > N&#xff0c;右移K-N之后的数组序列跟右移K位的结果是一样的。进而可得出一条通用的规律&#xff1a;右移K位之后的情形&#…

用分治法寻找第k小的值(C语言实现)

经典方法&#xff1a; #include<stdio.h> #include<stdlib.h> int min(int* A, int start, int end) {if (start end)return A[start];else{int min1, min2, mid;mid (start end) / 2;min1 min(A,start, mid);min2 min(A,mid 1, end);if (min1 < min2)re…