纯 C 中 auto 关键字的原因是什么?
What's the reason for auto keyword in pure C?
在C (ANSI C) 中所有变量默认都是auto,那么auto 关键字的原因是什么?你能说出使用 auto 关键字的例子吗? (C++14 除外)。
在 C
中,auto 关键字定义了一个局部变量存储 class,它从其声明结束到其封闭范围(块或函数)结束具有局部或有限的生命周期;一旦程序流退出该范围,该变量的实例将不复存在。
示例::
Auto [data_type] [variable_name];
所以这两个:
auto int var;
int var;
两个声明的含义相同。由于 auto 关键字是局部生命周期,是局部变量的默认值,因此 auto 关键字极少使用它仅对编译器编写者或解释器开发人员有意义,在符号 table 或更好的可读性中可以使用 auto 关键字. Auto 关键字表示此存储在进入块时自动分配(与全局静态分配或堆上的动态分配相反)。
所有变量默认都是不是auto
;例如,在文件范围内声明的任何内容都是 static
。
auto
关键字是 BCPL 和 B 语言的遗留物,C 语言就是从中派生出来的。它在这一点上基本上是退化的,但出于同样的原因,它不会造成任何伤害,所以也没有理由摆脱它。
在C (ANSI C) 中所有变量默认都是auto,那么auto 关键字的原因是什么?你能说出使用 auto 关键字的例子吗? (C++14 除外)。
在 C
中,auto 关键字定义了一个局部变量存储 class,它从其声明结束到其封闭范围(块或函数)结束具有局部或有限的生命周期;一旦程序流退出该范围,该变量的实例将不复存在。
示例::
Auto [data_type] [variable_name];
所以这两个:
auto int var;
int var;
两个声明的含义相同。由于 auto 关键字是局部生命周期,是局部变量的默认值,因此 auto 关键字极少使用它仅对编译器编写者或解释器开发人员有意义,在符号 table 或更好的可读性中可以使用 auto 关键字. Auto 关键字表示此存储在进入块时自动分配(与全局静态分配或堆上的动态分配相反)。
所有变量默认都是不是auto
;例如,在文件范围内声明的任何内容都是 static
。
auto
关键字是 BCPL 和 B 语言的遗留物,C 语言就是从中派生出来的。它在这一点上基本上是退化的,但出于同样的原因,它不会造成任何伤害,所以也没有理由摆脱它。