阅读 宋劲杉 老师的 Linux C 编程一站式学习 后总结 C99 引入的新特性。
声明跟语句顺序
C89 要求所有声明写在所有语句之前,而 C99 允许语句和声明按任意顺序排列,只要每个标识符遵循先声明后使用的原则就行。
初始化和赋值
复合类型
如下例子,C99 中 z1 必须是局部变量才能用另外一个变量 x 的值初始化,如果是全局变量就只能⽤常量表达式来初始化。C89 中不管局部变量还是全局变量都必须常量表达式才能初始化。
double x = 3.0;
struct complex_struct z1 = {
x, 4.0, }; /* z1.x=3.0, z1.y=4.0 */
C99引⼊⼀种新的表达式语法Compound Literal可以⽤来赋值,例如
z1 = (struct complex_struct){
3.0, 4.0