如何将C++中的多个变量初始化为相同的值?

Ala*_* S. 9 c++ c++11

这会有用吗?

double a = 2.0,
x, y, z = 0.50;
Run Code Online (Sandbox Code Playgroud)

第二行代码是否正常工作并将x,y,z初始化为0.50?

Ker*_* SB 12

您的代码叶xy未初始化.但是,稍微重新排列可以避免重复初始值:

double a = 2.0, x = 0.50, y = x, z = x;
Run Code Online (Sandbox Code Playgroud)

声明中先前声明的变量属于后面的声明范围.

当评估一个初始化程序可能具有非平凡的运行时成本时,这有时特别有用.例如,在以下嵌套循环中,其中m是multimap:

for (auto it = m.begin(), kt = it, e = m.end(); it != e; it = kt)
{   //    ^^^^^^^^^^^^^^^^^^^^^^^

    // handle partition

    for (; kt != e && kt->first == it->first; ++kt)
    {
        // ... handle equal-range
    }
}
Run Code Online (Sandbox Code Playgroud)


Rab*_*d76 6

不,只能z进行初始化。您必须这样编写:

double x = 0.50, y = x, z = x;
Run Code Online (Sandbox Code Playgroud)

但是您可以编写这样的作业:

 double x, y, z;
 x = y = z = 0.50;
Run Code Online (Sandbox Code Playgroud)


Fra*_*101 5

不,只有z会被初始化。

如果您之后尝试打印它们

std::cout << a << " " << x << " " << y << " " << z;

你会从编译器那里得到这样的警告:

警告:在此函数中使用了未初始化的“x”

为了清楚起见,我将使用 Rabbid76 建议的第二个选项:

 double x, y, z;
 x = y = z = 0.50;
Run Code Online (Sandbox Code Playgroud)