❶ 为什么c语言有很多不同的版本
C的标准本来就有多个版本,目前编译器采用的标准比较常见的是ANSI C和C99。另外语言标准中也存在未定义行为,留给编译器实现自己去定义。各种编译器对标准的实现也未必完全遵守(C还好,C++这种特别复杂的语言就很难做到完全遵守标准了),而且往往还增加一些自己的扩展,预定义宏之类的。这些都给跨编译器编码带来麻烦。不过总体而言C是个比较单纯的语言,除非程序员故意,一般搞不出太多给编译器出难题的花样。
❷ c++的c++11标准。
c++11标准由国际标准化组织(ISO)和国际电工委员会(IEC)旗下的C++标准委员会(ISO/IEC JTC1/SC22/WG21)于2011年8月12日公布[2] ,并于2011年9月出版。2012年2月28日的国际标准草案(N3376)是最接近于C++11标准的草案(仅编辑上的修正)。此次标准为C++98发布后13年来第一次重大修正。
1.对C++核心语言的扩充
2.核心语言运行期的强化(右值引用和 move 语义;泛化的常数表达式;对POD定义的修正)
3.核心语言建构期表现的加强(外部模板)
4.核心语言使用性的加强(初始化列表;统一的初始尺卖圆化;类型推导[auto关键字];以范围为基础的 for 循环;Lambda函数与表示法;另一种的函数语法;对象构建的改良;显式虚函数重载;空指针;强类型枚举;角括号;显式类型转换;模板的别名;无限制的unions)
5.核心语言能力的提升(变长参数模板;新的字符串字面值;用户自定义的字面值;多任务存储器模型;thread-local的配搭存储期限;使用或禁用对象的默认函数;long long int 类型;静态assertion;允许sizeof运算符作用在类型的数据成员上,无需明确的对象;)
6.C++标准程序库的变更陵塌(标准库组件的升级;线程支持;多元组类型;散列表;正则表达式;通用智能指针;可扩展的随机数功能;包装引用;多态函数对象包装器;用于元编程的类型属性;用于计算函数对象返回类型的统一方法)
❸ ANSI C标准的主要编译器的支持
ANSI C现在被几乎所有广泛使用的编译器支持。现在多数C代码是在ANSI C基础上写的。任何仅仅使用标准C并且没有任何硬件依赖假设的代码实际上能保证在任何平台上用遵循C标准的编译器编译成功。如果没有这种预防措施,多数程序只能在一种特定的平台或特定的编译器上编译,例如,使用非标准库,例如图形用户界面库,或者有关编译器或平台特定的特性例如数据类型的确切大小和字节序.
[编辑]选择编译 为了减轻K&R C和ANSI C标准,__STDC__(standard c)宏可以被用来将代码分割为ANSI和K&R部分。
#if __STDC__
externint getopt(int,char*const*,constchar*);
#else
externint getopt();
#endif
上面最好使用#if __STDC__而不是#ifdef __STDC__,因为一些实现可能会把 __STDC__设置为0来表示不遵循ANSI C。__STDC__能处理任何没有被宏替换或者值为0的标示符。因而即使宏__STDC__没有定义来表示不遵循ANSI C,__STDC__仍然能像显示的那样工作。
在上面的例子,一个原型中使用了ANSI实现兼容的函数声明,而另一个使用了过时的非原形声明。它们在C99和C90中依旧是ANSI兼容的,但并不被鼓励使用。
❹ c/c++有哪些标准
C++真正正式公布的标准就三个: C++98、C++03、C++11。其中C++98是第一个正式C++标准,C++03是在C++98上面进行了小幅度的修订,C++11则是一次全面的大进化(之前称C++11为C++0x,以为会在08~09年公布,没想到拖到了11年)。其实C++在第一个标准C++98之前就已经广为使用了裤中。只不过那时候还没有一个官方的统一标准,后来才开始起草标准草案,起草了n年,直到98年才最终发布。(所码做以一些早期迟纯衡的C++编译器对标准的支持程度很差,比如经典的VC6.0,在研发的时候C++的第一个标准还没公布呢!)至于什么C89、C99这些,是C语言的标准,不是C++的标准,很容易被一些人混淆。
❺ C语言在世界上有几个标准
最初是有ANSI C标准,然后ANSI把这个标准提交到ISO(毕竟ISO是国际化标准组织),ISO采纳为国家标准。ISO C与ANSI C内容基本相同,主要是格式组织不蔽败一样。这个标准是89年发布的,通常称为C89.
99年ISO发布了新的C标准,通常称为C99.
因为ANSI与ISO的C标准内容基本相同,所以对于C标准,可以称为ANSI C,也可以说是ISO C,或者ANSI/ISO C。
此外没有C标准。不伏并庆存在什么GNU C标准。
GNU计划中含多个内容缺握,其中包括开发C/C++编译器。这个编译器通常简称为GCC(GNU C/C++ compiler)
总而言之,ANSI/ISO C是语言标准。GCC是具体的编译器,它必须符合ANSI/ISO C标准的要求。
❻ c1和c2有什么区别 理解c1和c2的异同点
c1标准的编译器并不支持所有的c2标准的语言特性和库函数,而c2标准的编译器则可以支持c1标准和c2标准的语言特性和库函数。
由于c2标准增加了很多新的语言特性和库函数,因此c2标准的代码可能无法在c1标准的编译器上编译通过。而c1标准的代码则可以在c2标准的编译器上举饥搏编译通过,但可能无法使用c2标准的新特性和库函数。
C语言的库函数是非常重要的部分,它们提供了丰富的功能和操作。c2标准在c1的基础上增肢宏加了一些新的库函数,如sinh()、cbrt()、exp2()等。
4. 兼容性
总之,c1和c2是C语言的两个重要标准,它们在语言规范、语法特性、库函数等方面存在差正祥异。在编写C语言程序时,需要根据具体需求选择合适的标准,并考虑编译器的支持和代码的兼容性。
在C语言的发展历程中,c1标准是在1989年发布的,而c2标准则是在1999年发布的。相比于c1,c2标准在语言规范、语法特性、库函数等方面都进行了改进和扩展。
❼ C语言编译器是什么
C语言是一门面向过程的计算机编程语言,与C++、Java等面向对象编程语言有所不同。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、仅产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。C语言描述问题比汇编语言迅速,工作量小、可读性好,易于调试、修改和移植,而代码质量与汇编语言相当。C语言一般只比汇编语言代码生成的目标程序效率低10%~20%。因此,C语言可以编写系统软件。[2]
二十世纪八十年代,美国国家标准局为了避免各开发厂商用的C语言语法产生差异,给C语言制定了一套完整的美国国家标准语法,称为ANSI C。作为C语言最初的标准。[3]2011年12月8日,国际标准化组织(ISO)和国际电工委员会(IEC)发布的C11标准是C语言的第三个官方标准,也是C语言的最新标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度上实现了汉字编程。
C语言编译器普遍存在于各种不同的操作系统中,例如Microsoft Windows, Mac OS X, Linux, Unix等。C语言的设计影响了众多后来的编程语言,例如C++、Objective-C、Java、C#等。
例:
#include <stdio.h>
int main() {
printf("Hello,world!");
return 0;
}
编译运行将输出: Hello,world!
❽ C89,C99,C11等C语言标准是干吗的
C语言的标准就是定义任何一个支持该标准的C语言编译器必须支持的语法和必须提供的库。新的标准是在旧标准的基础上进行扩展,一般都是向后兼容的。
不过现在的编译器对C语言标准的支持不太积极(主要精力放在C++上面),比如VC++编译器只是部分支持了C99,所以新的C语言标准不太实用,你最好还是好好学习C89标准,现在的C语言教程一般都是以这个标准。
❾ 如何知道当前编译器是否是C99标准的有什么指令可以查到
#include<stdio.h>
int main()
{
#if (!defined(__STDC__))
printf("非标准C!");
#elif defined(__STDC_VERSION__)
printf("标准C版本:%ld。", __STDC_VERSION__);
#else
printf("旧的标准C。");
#endif
getchar();
return 0;
}
预定义宏__STDC__表示标准C。__STDC_VERSION__表示标准C版本。C99对应的是199901L。
(注意有些编译器默认没有定义__STDC_VERSION__,甚至没定义__STDC__。所以查编译器手册更保险一点。)
====
[原创回答团]
❿ 请问什么编译器支持c99标准
告诉你一个坏消息
vc++
2005支持的是c89
而不是c99
这点可以在一次对vs2005的负责人的采访中看出来
他解释了为什么vs2005支持c89
而不支持c99
目前完全支持c99标准的编译器还不存在
支持部分c99标准的编译器也不多
做的最好的是gcc