C语言的三套标准:C89、C99和C11有什么区别

C语言有三套标准:

1. C89(ANSI C):发布于1989年,是C语言的第一个正式标准。主要添加了函数原型、 const 关键字等。常见的标准库函数大多来自C89。

2. C99:发布于1999年,比较重要的特性有:

– 新增bool、long long、complex等类型

– 新增变量声明在任意位置

– 新增行内注释 //

– 新增复合字面量语法,如 (struct point){x=1, y=2}

– 新增 限定类型修饰符,如restrict

– 新增可变参数宏 #define square(x) x*x

– 新增C标准库函数,如snprintf()例:

int sum(int a, int b) {
  int result;
  result = a + b; // 行内注释
  return result; 
}

int main() {
  long long big = 12345678910; // C99新类型
  (struct point){x=1, y=2};    // C99新语法
  printf("Hello %s!", "world"); // C99 snprintf
}

3. C11:发布于2011年,新特性有:

– 支持Unicode字符集

– 新增_Static_assert静态断言

– 新增_Alignas对齐控制和_Alignof对齐查询

– 新增泛型类型特性_Generic

– 新增快速枚举enum class

– 新增_Noreturn函数属性

– 新增_Thread_local存储类修饰符例:

int add(int a, int b) {
  _Static_assert(sizeof(a) == sizeof(b), "types have different sizes!");
  return a + b;
}

enum class Color {Red, Green, Blue};  // 快速枚举

所以C11比C99又进一步扩充了语言特性,有更丰富的类型和函数来支持现代编程。

© 版权声明
THE END
喜欢就支持一下吧
点赞9 分享
评论 抢沙发

请登录后发表评论