我如何初始化所有这些变量为零而不声明每个变量在一个新的行?

int column, row, index = 0;

当前回答

int column = 0, row = 0, index = 0;

其他回答

可能的方法:

用0初始化所有局部变量。 有一个数组,memset或{0}数组。 让它成为全局的或静态的。 把它们放在struct和memset中,或者有一个构造函数来初始化 它们归零。

当声明一个变量而不初始化它时,将从内存中选择一个随机数,并将变量初始化为该值。

从c++ 17开始,你可以使用结构化绑定:

#include <iostream>
#include <tuple>

int main () 
{
    auto [hello, world] = std::make_tuple("Hello ", "world!");
    std::cout << hello << world << std::endl;
    return 0;
}

Demo

正如其他人所提到的,从c++ 17开始,你可以使用结构化绑定来进行多个变量的赋值。

结合std::array和模板参数推导,我们可以编写一个函数,将值赋给任意数量的变量,而无需重复类型或值。

#include <iostream>
#include <array>

template <int N, typename T> auto assign(T value)
{
    std::array<T, N> out;
    out.fill(value);
    return out;
}

int main()
{
    auto [a, b, c] = assign<3>(1);

    for (const auto& v : {a, b, c})
    {
        std::cout << v << std::endl;
    }

    return 0;
}

Demo

使用下面的声明,只有最后一个变量(index)被设置为0:

int column, row, index = 0;

相反,下面的代码将所有变量设置为0:

int column, row, index;
column = index = row = 0;

但就我个人而言,我觉得以下方法更有可读性:

int column = 0, row = 0, index = 0;
int column = 0;
int row = 0;
int index = 0;