15158846557 在线咨询 在线咨询
15158846557 在线咨询
所在位置: 首页 > 营销资讯 > 信息时代 > c语言发展历史

c语言发展历史

时间:2022-02-18 20:15:01 | 来源:信息时代

时间:2022-02-18 20:15:01 来源:信息时代

C语言之所以命名为C,是因为C语言源自KenThompson发明的B语言,而B语言则源自BCPL语言。

1967年,剑桥大学的MartinRichards对CPL语言进行了简化,于是产生了BCPL(BasicCombinedProgrammingLanguage)语言。

c语言宣传图

20世纪60年代,美国ATi<100; i)的形式,即i只在for语句块内部有效。

允许采用(type_name){xx,xx,xx}类似于C 的构造函数的形式构造匿名的结构体。

复合字面量:初始化结构的时候允许对特定的元素赋值,形式为:

structtest{inta,b;}foo={.a={1},.a=2};

structtest{inta,b,c,d;}foo={.a=1,.c=3,4,.b=5};//3,4是对.c,.d赋值的

格式化字符串中,利用u支持unicode的字符。

支持16进制的浮点数的描述。

printfscanf的格式化串增加了对longlongint类型的支持。

浮点数的内部数据描述支持了新标准,可以使用#pragma编译器指令指定。

除了已有的__line____file__以外,增加了__func__得到当前的函数名。

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

修改了/%处理负数时的定义,这样可以给出明确的结果,例如在C89中-22/7=-3,-22%7=-1,也可以-22/7=-4,-22%7=6。而C99中明确为-22/7=-3,-22%7=-1,只有一种结果。

取消了函数返回类型默认为int的规定。

允许struct定义的最后一个数组不指定其长度,写做(flexiblearraymember)。

constconstinti将被当作constinti处理。

增加和修改了一些标准头文件,比如定义bool的,定义一些标准长度的int的,定义复数的,定义宽字符的,类似于泛型的数学函数,浮点数相关的。在增加了va_copy用于复制...的参数。里增加了structtmx,对structtm做了扩展。

输入输出对宽字符以及长整数等做了相应的支持。

GCC和其它一些商业编译器支持C99的大部分特性。

C11标准

新的标准提高了对C 的兼容性,并增加了一些新的特性。这些新特性包括:

对齐处理(Alignment)的标准化(包括_Alignas标志符,alignof运算符,aligned_alloc函数以及头文件。

_Noreturn函数标记,类似于gcc的__attribute__((noreturn))。

_Generic关键字。

多线程(Multithreading)支持,包括:

_Thread_local存储类型标识符,头文件,里面包含了线程的创建和管理函数。

_Atomic类型修饰符和头文件。

增强的Unicode的支持。基于CUnicode技术报告ISO/IECTR19769:2004,增强了对Unicode的支持。包括为UTF-16/UTF-32编码增加了char16_t和char32_t数据类型,提供了包含unicode字符串转换函数的头文件.

删除了gets()函数,使用一个新的更安全的函数gets_s()替代。

增加了边界检查函数接口,定义了新的安全的函数,例如fopen_s(),strcat_s()等等。

增加了更多浮点处理宏。

匿名结构体/联合体支持。这个在gcc早已存在,C11将其引入标准。

静态断言(staticAssertions),_Static_Assert(),在解释#if和#error之后被处理。

新的fopen()模式,('…x')。类似POSIX中的O_CREAT|O_EXCL,在文件锁中比较常用。

新增quick_exit()函数作为第三种终止程序的方式。当exit()失败时可以做最少的清理工作。

关键词:发展,历史,语言

74
73
25
news

版权所有© 亿企邦 1997-2025 保留一切法律许可权利。

为了最佳展示效果,本站不支持IE9及以下版本的浏览器,建议您使用谷歌Chrome浏览器。 点击下载Chrome浏览器
关闭