奇思妙想 · 2024年 3月 22日 0

C语言有哪些标准?

30 次浏览

C语言发展至今,经历过经典C(K&R C)、C89、C99、C11、C17和C23.

  • C89相比经典C重要改动:标识符不止前8个字符有效、更多的类型、函数参数类型不需要额外声明、增加更多的宏、支持可变参数等。
  • C99相比C89:增加//开头的单行注释、_Bool类型、支持复数、for语句第一个表达式可以声明变量、long long类型、变长数组、声明和语句的混合、内联inline、宽字符wchar等。
  • C11相比C99:增加_Generic泛型、静态断言_Static_assert、多线程以及TLS、改进的Unicode支持等。
  • C17相比C11:没有引入新的语言特性,只有一些补充和修正。
  • C23相比C17:真正的bool、弱化的auto(相比C++)、类似C++的constexpr、类型typeof(类似C++的decltype)、自定义的属性、空初始化"={ }"、二进制字面量(例如0b11)、更好的UTF支持等。

ANSI C和ISO C

  • 二者是不同的标准,前者是美国国家标准协会,后者是国际标准化组织。
    比如C89 ANSI X3.159-1989 标准后来被ISO采纳变成 ISO/IEC 9899:1990, 二者是存在小的差异.