您可以与逗号一起使用自动吗?

Can you use auto with a comma

本文关键字:一起      更新时间:2023-10-16

您可以使用auto推论类型,其中有一个逗号来指示两个或多个变量的初始化。这样:

 auto p = c.begin(), e = c.end();

还是存在两个初始化(潜在的)对编译器的混淆?C 标准允许什么?

是的,只要它们的类型相同(在您的示例中它们是相同的类型)。

您可以使用具有逗号运算符的自动推导类型来指示两个或多个变量的初始化。

是。

或两个初始化的存在是否使编译器太困惑?

不,不是。只要自动扣除不会导致不一致的类型使用auto在同一语句中声明多个变量是可以的。

来自C 11标准/7.1.6.4自动指示符/3:

auto x = 5;                 // OK: x has type int
const auto *v = &x, u = 6;  // OK: v has type const int*, u has type const int

但是,您可能不会使用:

const auto *v = &x, u = 6.0;

希望将v的类型推定为const int*,并且将u的类型推定为const double