C23 自动与 C++11 自动

Mr *_*ser 11 c declaration auto c23

C23 标准显然引入了使用“auto”关键字进行自动类型推导,请参阅此处,就像 C++11 中一样。然而,似乎存在一些差异。

根据here,https://en.cppreference.com/w/cpp/keyword/auto,在C++11之后,不再auto是C++中的存储持续时间说明符。

然而,我无法轻易找到 C23 的等效声明。在C23中是否仍然auto是C中的存储类说明符?

还可以int auto x = 1;用C23写吗?

编辑:第一个问题的答案是肯定的。但正如 Andrew Henle 在下面的评论中指出的,第二个问题是不同的:

还可以float auto x = 1;用C23写吗?

正如 @AndrewHenle 和 @VladfromMoscow 在标准文档中引用的那样,6.7.1 存储类说明符,第 4 段

auto 仅应出现在具有文件范围的标识符的声明说明符中,或者如果要从初始值设定项推断类型,则应与其他存储类说明符一起出现。

float auto x = 1;如果此声明不在文件范围内,则这似乎不涵盖这种情况。

这句话的解释是什么?

还有一个问题:这句话看起来很混乱,因为我们肯定可以使用 auto 而无需“其他存储说明符”,不是吗?喜欢auto a = 1;