在C语言中,C11前后如何使用“auto”关键字?

Cbl*_*e X 0 c type-inference auto

我读过有关自动变量和局部变量的内容;我知道我可以使用auto来声明局部变量,但我知道我只能在没有auto关键字的情况下声明/定义局部变量。

我读到,在C11之前,auto关键字是无用的,而在C11之后,auto关键字现在具有类型推断功能。

我使用 C99,我注意到这个版本的标准没有类型推断属性,因为如果我有这行代码:

...
auto x;
printf("%d",sizeof(x));
...

Run Code Online (Sandbox Code Playgroud)

输出始终为 (4),即使使用 1.5 初始化“x”也是如此。

我的问题是,auto关键字在C11之前有相关用途吗?

并且,在C11之后, auto关键字的“类型推断”属性有什么好处?在C11之后使用auto相关或重要的地方在哪里?

提前致谢!!

giu*_*sti 7

C中的关键字auto与C++中的含义不一样。C 中没有类型推断。在 C 中,auto关键字意味着编译器决定变量应该存储在哪里。现代编译器通常会忽略它。

您所做的是声明一个没有类型的变量,因此大多数编译器会将其默认为int. 当您这样做时,它是一个用值( )初始化的auto x = 1.5类型变量,该值被截断为。(int)1.5double1

  • 请注意,[有*一个 C23 提案要求“auto”进行推导](https://www.open-std.org/JTC1/SC22/WG14/www/docs/n3007.htm)。 (6认同)